【发布时间】:2018-02-09 10:02:33
【问题描述】:
import React from 'react'
import ReactDOM from 'react-dom'
class App extends React.Component{
constructor(props) {
super(props)
this.state = {
list: [{id: 1,val: 'aa'}, {id: 2, val: 'bb'}, {id: 3, val: 'cc'}]
}
}
click() {
this.state.list.reverse()
this.setState({})
}
render() {
return (
<ul>
<div onClick={this.click.bind(this)}>reverse</div>
{
this.state.list.map(function(item, index) {
return (
<Li key={item.id} val={item.val}></Li>
)
}.bind(this))
}
</ul>
)
}
}
class Li extends React.Component{
constructor(props) {
super(props)
}
componentDidMount() {
console.log('===did===')
}
componentWillUpdate(nextProps, nextState) {
console.log('===mount====')
}
render() {
return (
<li>
{this.props.val}
<input type="text"></input>
</li>
)
}
}
ReactDOM.render(<App/>, document.getElementById('app'))
当我设置key为item.id时,我设置了三个输入标签a、b、c;
当我点击反向时,组件 Li 会挂载,输入会反向
当我把key改成index时,当我点击reverse时,组件li更新,输入标签不会改变,
我想知道它是怎么发生的?有人知道 key 是如何工作的吗?
【问题讨论】:
标签: javascript html reactjs virtual-dom