【发布时间】:2018-11-12 11:18:18
【问题描述】:
我刚刚开始学习 React,并且正在为条件渲染而苦苦挣扎。我想根据表单输入来渲染组件,但我不确定需要做什么或需要在哪里执行。
我已经导入了我的表单组件,该组件具有我想要使用的输入,并且还有另一个像这样的组件:
import React, {Component} from 'react';
import Form from './Form';
import CardOne from './CardOne';
import CardTwo from './CardTwo';
import CardThree from './CardThree';
export default class CardContainer extends Component {
render(){
return (
<div>
<CardOne />
<CardTwo />
<CardThree />
</div>
)
}
}
如果在提交表单时输入的值大于X,我基本上希望能够显示某些卡片,但我不知道如何定位导入的组件。
这是我的表单组件:
export default class Form extends Component {
state = {
number: ''
};
change = (e) => {
this.setState({
[e.target.name]: e.target.value
});
};
onSubmit = e => {
e.preventDefault();
this.props.onSubmit(this.state);
this.setState({
number: ''
})
};
render(){
return (
<form>
<label>Number</label>
<input
type="number"
name="number"
placeholder="Number"
value={this.state.number}
onChange={e => this.change(e)} />
<button onClick={e => this.onSubmit(e)}>Submit</button>
</form>
)
}
}
我们将不胜感激任何帮助!
【问题讨论】:
-
我可以帮忙。 .但我需要更多说明
-
我的理解是,例如:如果用户类型 1 意味着你需要显示一个卡片组件,如果用户类型 2 意味着 CardTwo 组件.. 如果我错了,请纠正我。 .取决于用户输入,您将显示 Card 组件对吗? ?
-
您必须在某处合并您的表单,
CardsContainer可能。除此之外,过滤卡的逻辑并不清晰,从这些 cmets 可以看出。你能补充一些解释吗? -
很抱歉,如果它含糊不清!我的意思是,如果有人输入例如“10”,cardOne 就会显示。如果他们输入“20”,就会显示cardsOne 和cardTwo。我希望这能让它更清楚一点!
-
是 10 的倍数吗?如果我输入 100 会怎样?
标签: javascript reactjs components conditional-rendering