我正在尝试开发一个允许您创建多个下拉列表的应用程序。根据下拉列表的选择,会显示一些特定于上下文的 list 。在页面底部,我希望有 (((one))) 按钮来将所有选中的项目和下拉列表中的 selectedValue 提交到 Web 服务。

问题是,我不知道如何将 selectedValue 的状态提升到包含所有下拉菜单和提交按钮的父组件。

这是我的顶级组件中的 render() 方法,如果您还不清楚的话,我认为它可以让您了解我希望页面的外观:

render(){ 
 let dropDownValues = this.state.dropDownValues; 
 let dropDowns = []; 
 for (let i=0; i<this.state.counter;i++){ 
    dropDowns.push(<DropDown key={i} values={dropDownValues} /> 
 } 
 
 return( 
     <div> 
        {dropDowns} 
        <button onClick={()=>this.addDropDown()}>+</button> 
        <button onClick={()=>this.removeDropDown()}>-</button> 
        <form method="post" onsubmit={this.postToWebservice(allTheStuffFromTheDropDownsContext)}> 
       <input type="submit" value="Submit Request To WebService" 
        </form> 
     </div> 
 ); 
} 

请您参考如下方法:

将回调传递给您的 DropDown 组件。因此,如果选中项目,将调用回调,并且您的顶级组件可以处理此问题。

dropDownSelected(selected) { 
  this.state.selectedValue = ... 
} 
render(){ 
 let dropDownValues = this.state.dropDownValues; 
 let dropDowns = []; 
 for (let i=0; i<this.state.counter;i++){ 
    dropDowns.push(<DropDown key={i} values={dropDownValues} onDropDownSelected={this.dropDownSelected.bind(this)} /> 
 } 
 
 return( 
     <div> 
        {dropDowns} 
        <button onClick={()=>this.addDropDown()}>+</button> 
        <button onClick={()=>this.removeDropDown()}>-</button> 
        <form method="post" onsubmit={this.postToWebservice(allTheStuffFromTheDropDownsContext)}> 
       <input type="submit" value="Submit Request To WebService" 
        </form> 
     </div> 
 ); 
} 


评论关闭
IT虾米网

微信公众号号:IT虾米 (左侧二维码扫一扫)欢迎添加!