reactjs - 嵌套的动态子组件中的自定义方法不会触发 React
问题描述
我的应用程序中有一个组件,它处理来自 API 的数据,并使用它根据 API 调用中的参数值之一动态创建子项(在他们自己的组件中定义)。我能够获取数据以呈现组件,但 onClick 方法不起作用。这是一些代码:父组件(在返回中):
{this.state.customInputs.map((input, i) => {
if(input.type === 'radio'){
return(
<div className="preference-section" key={i}>
<h2>{input.name}</h2>
<RadioCustomInput
radioActiveState={this.state.radioActiveState}
handleRadioClick={() => this.handleRadioClick()}
options={input.options} />
</div>
)
} else if ( input.type === 'checkbox'){
return(
<div className="preference-section" key={i}>
<h2>{input.name}</h2>
<CheckboxCustomInput
selectedBoxes={this.state.selectedCheckboxes}
handleOnClick={() => this.handleCheckboxClick()}
options={input.options} />
</div>
)
}
})
}
子组件:
class CheckboxCustomInput extends Component {
handleCheckboxOnClick = (e) => {
e.preventDefault();
let checkboxState = e.target.value;
console.log(checkboxState);
return this.props.handleCheckboxClick(checkboxState);
}
render(){
return(
<div className="preference-options">
{this.props.options.map((item, i) => {
return(
<div key={i} className="checkbox-group">
<label
className={this.props.selectedBoxes.includes(item) ? "active-box checkbox-label" : "checkbox-label"}
htmlFor={item}>
<input
className="checkbox-input"
type="checkbox"
value={item}
id={item + '_checkbox'}
onClick={() => this.handleCheckboxOnClick()} />
{item}
</label>
</div>
);
})}
</div>
)
}
}
导出默认 CheckboxCustomInput;
和另一个:
class RadioCustomInput extends Component{
handleRadioOnClick = (e) => {
e.preventDefault();
let radioState = e.target.value;
let radioName = e.target.name;
console.log(radioState);
return this.props.handleRadioClick(radioState, radioName);
}
render(){
return(
<div className="radio-group">
{this.props.options.map((item, i) => {
return(
<label
className={this.props.radioActiveState === item ? "active-box radio-label" : "radio-label"}
htmlFor={item + '-card'} key={i}>
<input
className="radio-input"
type="radio"
name={item}
value={item}
id={item + '_radio'}
onClick={() => this.handleRadioOnClick()} />
{item}
</label>
)
})}
</div>
)
}
}
导出默认 RadioCustomInput;
解决方案
收音机是否工作但复选框不工作?看起来您正在将一个名为的道具传递handleOnClick
给您的复选框组件,但需要一个handleCheckboxClick
道具。
推荐阅读
- node.js - TypeError:无法读取未定义的属性“定义”
- sql-server - 如何有效地将 Accesss SQL 结果与 SQL Server 结果进行比较?
- javascript - 使用变量访问状态
- freepascal - 致命:语法错误,应为“)”但找到标识符
- android - 我的 style.xml 中是否有多余的继承?
- c - 加载二进制文件 - realloc():下一个大小无效
- ios - 首次安装后是否可以继续深度链接?
- maven - 通过 Google Cloud maven 插件将 Java 灵活项目部署到不同的区域
- wordpress - ACF 中的 WordPress 所见即所得工具栏未显示
- oracle - How to generate model classes for existing oracle database in asp core 2.2?