import React from 'react'import PureRenderMixin from 'react-addons-pure-render-mixin'import './style.less'class SearchInput extends React.Component { constructor(props, context) { super(props, context); this.shouldComponentUpdate = PureRenderMixin.shouldComponentUpdate.bind(this); this.state = { value: '' } } render() { return ( <input className="search-input" type="text" placeholder="请输入关键字" onChange={this.ChangeHandle.bind(this)} onKeyUp={this.KeyUpHandle.bind(this)} value={this.state.value}/> ) } componentDidMount() { // 默认值 this.setState({ value: this.props.value || '' }) } ChangeHandle(e) { // 监控变化 this.setState({ value: e.target.value }) } KeyUpHandle(e) { // 监控 enter 事件 if (e.keyCode !== 13) { return } this.props.enterHandle(e.target.value) }}export default SearchInputonChange={this.ChangeHandle.bind(this)}value={this.state.value}一开始一直以为是个死循环。设置了value以后重新给input赋值。赋值以后再触发onChange 。这不就是死循环了么。但是没有出现死循环。而且React官方也比较推荐这种写法--请问源码是怎么处理的呢
添加回答
举报
0/150
提交
取消