javascript - 如何使用React中的一个函数处理数组中的多个输入

标签 javascript reactjs

我爸爸给了我一个作业,让他制作一个可以计算房屋账单的应用程序,所以我在每行中有一个标题和 2 个输入。我可以在状态中创建一个对象数组并从另一个组件调用它们,然后将它们映射出来并从中获取值吗?

我正在 react 中工作。我尝试创建一组输入,只需一个函数即可从中获取值。

state = {
ponovo: [
    {
      id: 1,
      title: 'Izaberi ponovo 1:  ',
      iznos: '' 
    },
    {
      id: 2,
      title: 'Izaberi ponovo 2:  ',
      iznos: ''
    },
    {
      id: 3,
      title: 'Izaberi ponovo 3:  ',
      iznos: ''
    }
  ]}



handleChange = (id, iznos, event, title) => {
this.setState({
  ponovo: this.state.ponovo.map(ponovo => {
    if (ponovo.id === id) {
      ponovo.iznos = iznos
      return (
        { iznos: event.target.value }
      );
    } return ponovo;
  })
});
console.log(id, iznos, title);}


<Ponovo ponovo={this.state.ponovo} handleChange={this.handleChange} />


//Ponovo.js
{this.props.ponovo.map((ponovo) => (
                    <Ponova key={ponovo.id} ponovo={ponovo} handleChange={this.props.handleChange} />))}

//Ponova.js

{title}
<input type='Number' value={iznos} onChange ={this.props.handleChange.bind(this, title, iznos, id, completed)} />
            {iznos}

我无法输入这些输入中的值,或者无法从中获取值。 我认为问题出在我的handleChange函数中,我将它们与它们的id匹配,但由于某种原因我不能在它们上使用event.target.value。 有什么建议、提示、帮助吗? 谢谢! :)

最佳答案

您的handleChange函数应该只从子组件中获取ide(事件),使用您的id可以更改父组件中的状态。

  handleChange = (e,id) => {
    console.log(e.target.value);
    var index = this.state.ponovo.findIndex(ponovo => ponovo.id === id);
    if (index === -1) {
        // handle error
    } else {
        this.setState({
            ponovo: [
                ...this.state.ponovo.slice(0, index),
                Object.assign({}, this.state.ponovo[index], { iznos: e.target.value}),
                ...this.state.ponovo.slice(index + 1)
            ]
        });
    }
  }

Demo

关于javascript - 如何使用React中的一个函数处理数组中的多个输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57218161/

相关文章:

javascript - 使用 Javascript 和 CSS 垂直扩展图像而不中断流程

reactjs - 在每个时间间隔更改文本 - React

reactjs - 如何修复设备: (3:2294) null is not an object (evaluating 'f.getRandomBase64' ) uuid react-native

javascript - React-Native (FlatList) : How to know when the rendering of visible items has finished

Javascript 多级下拉菜单

javascript - Twitter 嵌入 - 如何覆盖 CSS

javascript - 即使在分派(dispatch)操作并接收有效负载后,也不会调用Reducer

javascript - React 动态导入 Svg 文件

javascript - ReactJS - 你可能需要一个适当的加载器错误

javascript - 共享 promise (在 Redux 状态下。)