django - 如何渲染元素取决于所选选项?
问题描述
我是 react js 的新手,我想要一个带有选择选项的表单,我希望当用户单击每个选项时,每个选项都会呈现不同的元素
class Resepy extends Component {
state = {
Resepy : 'default'
}
render() {
return = (
<div className="Resepy">
<form>
<select id="id_field1" name="field1" onChange={(e) => this.state.Resepy = "Burger"}>
<option value="default">Food type not selected</option>
<option value="burger" onClick={(e) => this.setState({ Resepy: 'Burger' })}>Burger</option>
<option value="pizza" onClick={(e) => this.setState({ Resepy: 'Pizza' })}>Pizza</option>
</select>
<div className="food">
{ this.state.Resepy === "burger" ? <div className="burger"></div> //can return any html
: <div className="default">default</div>
}
<div className="pizza"></div>
<div className="food-detail"></div>
</div>
<button type="submit">Add to tray</button>
</form>
</div>
);
}
}
export default Resepy;
解决方案
通用三元运算符用于更易读的代码。
像这样:
<form>//can be any element
{ codition == true ? <div>It is true</div> //can return any html
: <div>It is false</div>
}
</form>
测试,工作。问题在于 onClick 方法选项无法调用该事件。
class Resepy extends React.Component {
constructor(props){
super(props);
this.state = {
selected : 'default'
};
}
setSelected = (event) => {
let select = document.getElementById("id_field1");
this.setState({selected: select.value});
//document.getElementById("test").innerHTML = select.value;
}
render() {
return (
<div className="Resepy">
<h1>Something</h1>
<form>
<select id="id_field1" name="field1" onChange={this.setSelected}>
<option value="default">Food type not selected</option>
<option value="burger">Burger</option>
<option value="pizza">Pizza</option>
</select>
<div id="test"></div>
<div className="food">{
(this.state.selected === "default") ?
<div className="default">Default</div>
: (this.state.selected === "burger") ?
<div className="burger">Burger</div>
: <div className="pizza">Pizza</div>
}</div>
<button type="submit">Add to tray</button>
</form>
</div>
);
}
}
推荐阅读
- function - UFT - 将表发送到函数
- javascript - 将项添加到数组中的子数组
- android-studio - OkHttp:<-- HTTP FAILED:java.net.UnknownServiceException:网络安全策略不允许与 10.0.2.2 进行 CLEARTEXT 通信
- apache-kafka - Cassandra 模板正在更新 cassandra 表的特定整数列,但在 DB 中它不反映更新的值
- c++ - 具有相同类型的可变参数模板参数的构造函数无法编译
- sql - 同一个表中有多个对应值的行
- google-chrome - Angular 7,同时尝试通过“最大调用堆栈大小超出错误”直接将内部页面链接复制并访问到 chrome
- reactjs - 根据来自 REST 调用的输入折叠元素
- android - 如何在 Kotlin Gradle DSL 的 applicationVariants 中更新 manifestPlaceholders?
- java - 在未映射的 POJO 上具有本机命名查询的 spring 数据存储库