Reactjs 反应组件不会按状态更改的顺序呈现
在react中,假设我有prop name=A、B、C的输入组件。 它们按顺序呈现Reactjs 反应组件不会按状态更改的顺序呈现,reactjs,virtual-dom,Reactjs,Virtual Dom,在react中,假设我有prop name=A、B、C的输入组件。 它们按顺序呈现 render() { return( <Input name="A" /> <Input name="B" /> <Input name="C" /> ); } render(){ 返回( ); } 然后我按照先C然后A的顺序更改C和A的状态。 组件A和C按照先A然后C的顺序重新渲染。它们不会按照状态更改的顺序呈现(C然后A)
render() {
return(
<Input name="A" />
<Input name="B" />
<Input name="C" />
);
}
render(){
返回(
);
}
然后我按照先C然后A的顺序更改C和A的状态。
组件A和C按照先A然后C的顺序重新渲染。它们不会按照状态更改的顺序呈现(C然后A)
请参阅下面给出的代码片段。
我发现这本书被出版了
设置C的状态
设置B的状态
设定状态
渲染
B的渲染
C语言的渲染
类输入扩展了React.Component{
组件willmount(){
this.props.addInput(this);
}
状态={
错误:false
}
检查(){
log(“设置状态”,this.props.name)
这是我的国家({
错误:正确
})
}
render(){
log(“呈现”,this.props.name)
返回(
);
}
}
类Hello扩展了React.Component{
建造师(道具){
超级(道具);
this.inputs={};
}
附加输入(组件){
this.inputs[component.props.name]=组件;
console.log(this.inputs);
}
checkAll(){
const inputs=this.inputs;
Object.keys(inputs).reverse().forEach(name=>{
输入[name]。检查()
});
}
render(){
返回(
this.addInput(c)}name=“A”/>
this.addInput(c)}name=“B”/>
this.addInput(c)}name=“c”/>
this.checkAll()}>单击此处
);
}
}
ReactDOM.render(
,
document.getElementById('容器')
);代码>
这就是默认情况下JSX的工作方式
如果要按上次状态更改的顺序呈现组件,则必须将所有组件放入一个数组中,或者有一个componentName:componentInstance
的集合,还必须有一个componentName:lastUpdated
的集合[或数组](或者数组项表单{componentName:string,lastUpdated:Date}
),您可以在其中修改每个组件的lastUpdated
值,然后根据日期值对componentName:componentInstance
集合或数组排序
然后在JSX中添加.map
。您必须包含相关的代码部分才能重现问题。您好,我只想知道react组件的呈现顺序。@YuryTarabanko添加了代码片段,请检查谢谢您的回答。您能检查更新的代码吗。