如何从 React 的另一个组件中读取变量?

Posted

技术标签:

【中文标题】如何从 React 的另一个组件中读取变量?【英文标题】:How can I read a variable from another component in React? 【发布时间】:2021-01-06 08:03:41 【问题描述】:

我使用 React 从组件中的两个选项元素接收这两个值。 问题:如何从另一个组件中读取这两个变量?

const handleInputChange = (e) =>    
    const valueFilterActive = document.getElementById("activeFilter").value;
    const valueFilterName = document.getElementById("bussFilter").value;
    alert(valueFilterName+valueFilterActive);   
 ;

第二个组件代码行:

 return (
    <> 
      <div className="col-md-4 p-2">
        <FirstComponent/>
  
      </div>
      <div className="col-md-8 p-1 ">
          <div className= valueFilterActive  === 'Activado' ? "text-success" : "text-primary card mb-1" key=link.id>

非常感谢!!!

【问题讨论】:

第二个组件是否包含在第一个组件中?能否提供完整的组件代码? 相反:第一个组件包含在第二个组件中。我只是添加更多代码以了解我需要什么。谢谢 M. Faisal 【参考方案1】:

如果您想从另一个组件中读取变量,您可以使用多种方法。这取决于您如何链接这些组件。

如果基值在父级中并且您想将其传递给子级,请使用道具https://reactjs.org/docs/components-and-props.html

const element = <Welcome data1 =valueFilterActive data2 =valueFilterName />;

function Welcome(props)   
return <h1>Hello, props.valueFilterName props.valueFilterActive</h1>;

如果基值在子级中,并且您想将其传递给父级,则使用回调函数 https://reactjs.org/docs/faq-functions.html

但如果它的方式更复杂,我建议使用 Context Hook https://reactjs.org/docs/hooks-reference.html#usecontext

(PS:同样在反应中你不使用getElementById,而是另一个名为useRef的钩子 https://reactjs.org/docs/hooks-reference.html#useref)

【讨论】:

【参考方案2】:
// in the component that renders <FirstComponent> create  hooks for values you'd like to track
import React,  useState  from 'react';

const [inputValues, setInputValues] = useState();

return (
  <> 
    <div className="col-md-4 p-2">
      <FirstComponent onChange=setInputValues/>

    </div>
    <div className="col-md-8 p-1 ">
        <div className= valueFilterActive  === 'Activado' ? "text-success" : "text-primary card mb-1" key=link.id>


// in your <FirstComponent> call setInputValues and set variables 
const handleInputChange = (e) =>    
  const valueFilterActive = document.getElementById("activeFilter").value;
  const valueFilterName = document.getElementById("bussFilter").value;
  // this will set `inputValues` variable to be an object with `valueFilterActive` and `valueFilterName` properties
  setInputValues(valueFilterActive, valueFilterName)
  alert(valueFilterName+valueFilterActive);   
;

【讨论】:

以上是关于如何从 React 的另一个组件中读取变量?的主要内容,如果未能解决你的问题,请参考以下文章

React Native-在功能组件中首次加载/渲染屏幕时,如何使用从 AsyncStorage 读取的值启动 TextInput?

如何通过 ID 从 Apollo 缓存中读取嵌套对象?

React 功能组件状态变化不会触发子组件重新读取其 props

如何将一个道具作为变量传递给 React 中的另一个道具?

在 ngOnInit() 中使用数据绑定从本地 JSON 文件读取数据会导致未定义的变量

react antd如何读取doc文件