reactjs - 在 Reactjs 组件中使用条件
问题描述
在我的代码研究示例中,每个按钮必须在单击时显示不同的文本,具体取决于父组件中写入的条件。
handlerButtons=()=> {
switch(this.props.id) {
case "id1": this.setState({text: "Text 1"}); break;
case "id2": this.setState({text: "Text 2"}); break;
case "id3": this.setState({text: "Text 3"}); break;
case "id4": this.setState({text: "Text 4"}); break;
case "id5": this.setState({text: "Text 5"}); break;
default: this.setState({text: "Text default"}); break;
}
}
为什么单击任何按钮只显示默认文本?条件有什么问题?
解决方案
你实际上错过onClick
了最重要的地方——它自己的按钮。您还在检查this.props.id
id 不在您的道具中的值。进行以下更改:
class MyButton extends React.Component {
onClickHandle = (e) => { this.props.onClick(e) }
render() {
return <button id={this.props.id} className="mybutton" onClick= {this.onClickHandle}>{this.props.label}</button>;
}
}
将 ButtonList 更改为:
class ButtonsList extends React.Component {
render() {
return(
<ul>
{buttons.map((button)=> <MyButton id={button.id} label={button.label} onClick={this.props.handlerButtons}/>)}
</ul>
);
}
}
最后,更改您的处理程序:
handlerButtons=(e)=> {
switch(e.target.id) {
case "id1": this.setState({text: "Text 1"}); break;
case "id2": this.setState({text: "Text 2"}); break;
case "id3": this.setState({text: "Text 3"}); break;
case "id4": this.setState({text: "Text 4"}); break;
case "id5": this.setState({text: "Text 5"}); break;
default: this.setState({text: "Text default"}); break;
}
}
推荐阅读
- forms - 如何在 Prestashop 1.6 上创建帐户时使用多个复选框
- python - 如何在 prometheus 中创建自定义指标?
- android - 如何修复此用户界面
- internet-explorer - Array.from 和 forEach 中的“箭头函数”在 IE 11 中不起作用,它在控制台中引发语法错误。如何解决?
- javascript - 如何从多个单选按钮中获取值并以动态形式打印?
- sql - 如何将现有 Blob 列上的 DEFAULT 值设置为 EMPTY_BLOB()
- javascript - 根据 id 选择多个元素以获得彼此相邻的最大组
- r - 我如何增加所需的分数并作为向量返回
- r - 尝试在 R 中构建人工神经网络,但无法扩展数据集
- php - PHP - 将 $filter 和 $update 数组作为 `MongoDB\Collection::updateMany` 方法中的变量传递