如何在反应中将数组从子组件发送到父组件?

Posted

技术标签:

【中文标题】如何在反应中将数组从子组件发送到父组件?【英文标题】:How to send an array from child component to parent component in react? 【发布时间】:2021-08-24 13:04:37 【问题描述】:

我正在创建一个反应应用程序,我必须将一个数组从子组件发送到父组件。我现在正在尝试使用回调函数发送,但它不起作用。

这是我的子组件:

var apis=[]
export default class ApiDropDown extends React.Component 
  constructor() 
    super();
    this.state = 
      options: [],
      suboptions: [],
    ;
  

  componentDidMount() 
    this.fetchOptions();
  

  fetchOptions() 
    fetch("http://localhost:5000/groups")
      .then((res) => 
        return res.json();
      )
      .then((json) => 
        this.setState( options: json );
      );
  
  //SETTING THE apis here,just adding few elements,its a long function
  onSubmit()
  
    this.props.apisgranted(apis)
  


  render() 
  
    return (
      
       
        <div>
          <button type="button" className="btn" onSubmit=this.onSubmit> //Save button to set data in the prop.
            Save
          </button>
        </div>
      
    );
  

现在这是我的父组件:

const AddTask = ( onAdd, onStatusChange ) => 
  const [client_name, setText] = useState("");
  const [status, setStatus] = useState("");
  const [showMessage,setMessage]=useState(false)
  const [apigrants,setapigrants]=useState([])

  
 const handleApiGrants = (langValue) => 
    
    setapigrants(langValue) //setting the props array here from child component
    console.log(apigrants)  //nothing gets printed here



 

 
  
  return (
    <form className="add-form" onSubmit=onSubmit>
      <div>
   
      <button onClick=setmessage.bind(false, true) type="button" className="btn">Grant API's</button>
      
       showMessage && (<ApiDropDown apisgranted=handleApiGrants />)  //calling the props handling function where which should set the apigrants array with props array.
      
      </div>

在我的子组件中,我使用onSubmit 函数将数组设置为prop。 在我的父组件中,首先我将 apigrants 数组声明为空,然后使用 handleApiGrants 函数将其分配给子组件的 prop 数组。

【问题讨论】:

您的代码看起来正确。输入像this.props.apisgranted('test data') 这样的值,您将在父组件中看到它。您正在从子组件发送空数组。 【参考方案1】:

最简单的方法是在父组件中定义变量并将其传递给子组件,就像使用 handleApiGrants 一样

【讨论】:

以上是关于如何在反应中将数组从子组件发送到父组件?的主要内容,如果未能解决你的问题,请参考以下文章

如何将变量的值从子组件发送到父组件?

如何在不调用事件的情况下将数据从子级发送到父级(vue 2)

如何在Angular 4中将值从子组件传递到父组件

React Hook:将数据从子组件发送到父组件

如何在 Qt 中将消息从子窗口小部件发送到父窗口?

如何在Angular中将表单数据从子组件传输到父组件