Javascript React:基于状态的组件动态渲染
我有一个Javascript React:基于状态的组件动态渲染,javascript,reactjs,Javascript,Reactjs,我有一个父项(带三个按钮的蓝色框)和一个子项(显示内容的红色框)组件,它们根据子项的状态呈现一些文本。基本上,渲染视图如下所示: 子组件组件: class Child extends Component { constructor(props) { super(props); this.state = { tab: this.props.tab } } render() { let text; if (this.props.ta
父项
(带三个按钮的蓝色框)和一个子项
(显示内容的红色框)组件,它们根据子项
的状态呈现一些文本。基本上,渲染视图如下所示:
子组件
组件:
class Child extends Component {
constructor(props) {
super(props);
this.state = {
tab: this.props.tab
}
}
render() {
let text;
if (this.props.tab === '1') {
text = <div>text 1 </div>
} else if (this.props.tab === '2') {
text = <div>text 2 </div>
} else if (this.props.tab === '3') {
text = <div>text 3 </div>
}
return (
<div>
{text}
</div>
);
}
}
export default Child;
class Parent extends Component {
constructor(props) {
super(props);
this.state = {
tab: null
}
this.onOneClik = this.onOneClik.bind(this);
this.onTwoClik = this.onTwoClik.bind(this);
this.onThreeClick = this.onThreeClick.bind(this);
}
onOneClik(e) {
this.setState({ tab: '1' });
}
onTwoClik(e) {
this.setState({ tab: '2' });
}
onThreeClick(e) {
this.setState({ tab: '3' });
}
render() {
return (
<div>
<button type="button" onClick={this.onOneClik}>1</button>
<button type="button" onClick={this.onTwoClik}>2</button>
<button type="button" onClick={this.onThreeClik}>3</button>
</div>
<div>
<Child tab={this.state.tab} />
</div>
);
}
}
问题是,我需要在单击按钮时重新呈现子级,但子级仅显示首先单击的按钮的内容,即使在单击不同的按钮时父级的状态会自动更新
在不涉及链接的情况下动态呈现子对象的方法是什么?我想redux可能会有所帮助,但我不确定如何包装redux。当组件的
状态或道具更改时,组件将被重新渲染。您可以直接使用道具,而不是将初始的选项卡
道具存储在子组件的状态下(也可以在下面修复一些拼写错误)
示例
类子级扩展React.Component{
render(){
让文字;
如果(this.props.tab==“1”){
文本=文本1;
}否则如果(this.props.tab==“2”){
文本=文本2;
}否则如果(this.props.tab==“3”){
文本=文本3;
}
返回{text};
}
}
类父类扩展了React.Component{
状态={
选项卡:空
};
onOneClick=e=>{
this.setState({tab:“1”});
};
onTwoClick=e=>{
this.setState({tab:“2”});
};
ontreeclick=e=>{
this.setState({tab:“3”});
};
render(){
返回(
1.
2.
3.
);
}
}
ReactDOM.render(,document.getElementById('root'))代码>
@Ruham不客气!是的,把道具放在州里很有诱惑力,但大多数时候你真的不需要。