javascript - React JS 输入类型文本在按键后失去焦点

标签 javascript reactjs

Fiddle Demo 我正在尝试更新包含数据对象数组的状态数组。

构造函数中的状态:

this.state = {
        data: [
        { name: "Abc", age: 12 },
        { name: "Xyz", age: 11 }
      ]
    }

处理程序:

handleName(idx, e){
        const data = this.state.data.map((item, sidx) => {
            if (idx !== sidx) return item;
            return { ...item, name: e.target.value };
        });

        this.setState({ data: data });
  }

  handleAge(index, e){
        const data = this.state.data.map((item, sidx) => {
            if (idx !== sidx) return item;
            return { ...item, age: e.target.value };
        });

        this.setState({ data: data });
  }

渲染方法:

render() {
      console.log('render');

        const Input = () => this.state.data.map((item, index) =>{
            return (
            <div>
              <input type="text" value={item.name} onChange={(e) => this.handleName(index, e)}/>
              <input type="text" value={item.age} onChange={(e) => this.handleAge(index, e)}/>
            </div>
          );
        });

        return (
            <div>
             <Input/>
          </div>
        )
      }
    }

我知道每次击键时渲染方法都会刷新 dom,这是我的渲染元素出了问题。 有什么建议 ?

最佳答案

从 map 中返回元素时,您必须为它们分配一个键,否则将始终在新渲染上创建它的新实例。另外,您不能在渲染中创建组件

render() {
  console.log('render');

    return (
      <div>
         {this.state.data.map((item, index) =>{
        return (
        <div key={index}>
          <input type="text" value={item.name} onChange={(e) => this.handleName(index, e)}/>
          <input type="text" value={item.age} onChange={(e) => this.handleAge(index, e)}/>
        </div>
      );
    })}
      </div>
    )
  }
}

<强> Working DEMO

关于javascript - React JS 输入类型文本在按键后失去焦点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55721651/

相关文章:

reactjs - 热图图层未显示在 Google map API (@react-google-maps/api) 中

ios - 打印 : Entry, ":CFBundleIdentifier", 不存在

javascript - 将元素上的 `display: none` 恢复为原始值

javascript - 为什么这个字谜函数不正确?

javascript - 根据javascript中的顺序号将对象推送到数组

javascript - ReactJS 样式组件

javascript - Themeforest 模板中包含什么

javascript - JSX 元素类型 'void' 不是 JSX 元素的构造函数

javascript - 在 ReactJS 中更新数组中对象的最佳方法是什么?

reactjs - 为什么我的 “Audio-Button”不播放声音(onClick)