Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/462.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript React.js-更新项目后重新绘制数组_Javascript_Reactjs - Fatal编程技术网

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){
让线=”;
如果(i
render()){
设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()
?这有帮助