Javascript React.js-更新项目后重新绘制数组
我有这样的陈述:Javascript React.js-更新项目后重新绘制数组,javascript,reactjs,Javascript,Reactjs,我有这样的陈述: this.state = { items = [] } render(){ let itemsrender=[]; for (let i in this.state.items){ let line=""; if (i<this.state.items.length-1) line=<div className="row line"></div>; atcrender.push(
this.state = {
items = []
}
render(){
let itemsrender=[];
for (let i in this.state.items){
let line="";
if (i<this.state.items.length-1) line=<div className="row line"></div>;
atcrender.push(
<div key={this.state.item[i].id}>
<div className="row" >
<ITEM
item={this.state.items[i]}
onUpdate={this.onUpdate}
onDelete={this.onDelete}
/>
</div>
{line}
</div>
)
}
return(
<div>{itemsrender}</div>
);
}
状态从正常工作的REST服务加载。
但是,稍后,当用户编辑状态中的一个项时,我使用immutability helper来更新状态:
const newState = update(this.state, {
items: {
[index]: {$set: newItem}
}
});
this.setState(newState);
这将不会被重新绘制(渲染方法将通过,但页面上没有可见的更改),我知道原因:
因为我正在创建数组以如下方式渲染:
this.state = {
items = []
}
render(){
let itemsrender=[];
for (let i in this.state.items){
let line="";
if (i<this.state.items.length-1) line=<div className="row line"></div>;
atcrender.push(
<div key={this.state.item[i].id}>
<div className="row" >
<ITEM
item={this.state.items[i]}
onUpdate={this.onUpdate}
onDelete={this.onDelete}
/>
</div>
{line}
</div>
)
}
return(
<div>{itemsrender}</div>
);
}
render(){
设itemsrender=[];
for(让我输入此.state.items){
让线=”;
如果(irender()){
设itemsrender=[];
for(让我输入此.state.items){
让线=”;
如果(i我认为问题出在let itemsrender
上,因为这是从render方法返回的内容,这就是将要渲染的所有内容。您似乎没有在循环中的任何地方更新它,因此从render方法返回的内容永远不会更改
您还可以通过在状态上映射来重新编写它,这样可以更容易地看到发生了什么
render() {
return (
<div>
{this.state.items.map((item, index) => {
<div key={item.id}>
<div className="row" >
<ITEM
item={item}
onUpdate={this.onUpdate}
onDelete={this.onDelete}
/>
</div>
{index < this.state.items.length - 1 ? <div className="row line"></div> : ''}
</div>
})}
</div>
)
}
}
render(){
返回(
{this.state.items.map((项,索引)=>{
{index
您是否尝试调用forceUpdate()
?这有帮助