React 动态数据绑定修改对应的input框更新对应的文本内容

需求:以下的输入框我修改哪个,哪个对应的文本内容及时更新 

子组件:

const person = (props) =>{
  return(
    <div className="footer">
        <p onClick={props.presonHandler}>我的名字叫{props.name}</p>
        <input type="text" onChange={props.changed} defaultValue={props.name} />
    </div>
  )
}

 父组件:

import Footer from './components/layout/Footer';
class App extends Component {
  state = {
    persons: [
      {
        name: "周家大小姐",
        id: 0
      }, {
        name: "陈家大小姐",
        id: 1
      },
      {
        name: "花家大小姐",
        id: 2
      },
      {
        name: "牛家大小姐",
        id: 3
      },
      {
        name: "黄家大小姐",
        id: 4
      },
      {
        name: "郑家大小姐",
        id: 5
      },
      {
        name: "陈家大小姐",
        id: 6
      },
      {
        name: "李家大小姐",
        id: 7
      },

    ]

  };
  // 输入框事件双向绑定
  NameChanged = (event, id) => {//需求:改变输入框的内容,对应的文本内容也修改
    // findIndex为es6中的方法返回对应的下标
    const presonIndex = this.state.persons.findIndex(p => {
      // 如果ID相等的话就返回回去
      return p.id === id
    })
    // 获取当前修改内容的state对象属性及值
    const person = { ...this.state.persons[presonIndex] }
    // 修改名字
    person.name = event.target.value;
    const persons = [...this.state.persons]
    // 把当前修改过的值赋给对应下标的文本
    persons[presonIndex] = person;
    // 更新state内容
    this.setState({
      persons: persons
    })
  }
  render() {
    return (
      <div className="App">
        <button onClick={this.click}>显示与隐藏</button>
        <Footer
          name={person.name}
          v-if="showPreson" key={index}
          presonHandler={() => this.presonDelet(index)}
          changed={(event) => this.NameChanged(event, person.id)}
        />
      </div>
    );
  }
}

export default App;

已标记关键词 清除标记
相关推荐
©️2020 CSDN 皮肤主题: 程序猿惹谁了 设计师:白松林 返回首页