javascript - 特定数组项的 setState()

标签 javascript reactjs

我正在生成多个输入,并希望将它们的值绑定(bind)到存储在 state 中的数组。我正在使用数组,因为输入的数量不同,我无法静态创建它们。 我正在分配它们的值(value)并且它按预期工作:

    this.setState({
      wordInputs: this.state.userTitle.map((word) => {
      let input = <input type="text" key={i} value={this.state.userTitle[i]} onChange={this.checkWordInput}/>
      i++
      return input
      })
    })

现在我想用 checkWordInput() 处理用户输入,我的问题来了:如何访问输入的 key 属性集以更新 >this.state.userTitle 数组?还是有其他方法可以做到这一点?

最佳答案

我认为你不需要在状态中存储inputs,你可以将inputs移动到render,像这样

class App extends React.Component {
  constructor() {
    super();
    this.state = {
      userTitle: [
        'title - 1',
        'title - 2',
        'title - 3',
        'title - 4'
      ]
    };
    
  }
  
  checkWordInput(index, e) {
    this.setState({
      userTitle: this.state.userTitle.map((title, i) => (
        i === index ? e.target.value : title
      ))
    })  
  }
        
  render() {
    const inputs = this.state.userTitle.map((title, index) => ( 
      <input 
        type="text" 
         key={index} 
         value={title} 
         onChange={ (e) => this.checkWordInput(index, e) }
      />
    ));
        
    return (
      <form>
        { inputs }

        { this.state.userTitle.map((title, i) => <p key={i}> { title }</p>) }
      </form>
    );
  }          
}
        
ReactDOM.render(
  <App />, 
  document.getElementById('app')
);

        
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.1.0/react.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.1.0/react-dom.min.js"></script>
<div id="app"></div>

关于javascript - 特定数组项的 setState(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41432587/

相关文章:

javascript - 如果在移动设备上打开网页如何在 React JS Web 应用程序中打开电话调用屏幕

arrays - 当状态是对象数组时如何更新特定值 - React

javascript - 当将 redux 状态映射到 props 到组件中时,它返回未定义

返回错误维度的 Javascript 多维数组

javascript - 为什么当我解构属性时接收 props 的组件不工作,但当我使用 props.key 时它工作?

javascript - 无法呈现将 React 状态传递给另一个组件的 Prop 的组件

javascript - 为什么表格数据没有被渲染?

javascript - 有没有办法在 vuetify-jsonschema-form vue js 中添加自定义验证?

javascript - 在 javascript 中使用 firebase firestore 更新功能中的 promise

javascript - 如何在第一次单击后禁用搜索按钮,直到结果来自服务器