账号密码登录
微信安全登录
微信扫描二维码登录

登录后绑定QQ、微信即可实现信息互通

手机验证码登录
找回密码返回
邮箱找回 手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    能否通过react源码解释一下这个是怎么实现的么
    39
    0
    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 SearchInput

    onChange={this.ChangeHandle.bind(this)}
    value={this.state.value}
    一开始一直以为是个死循环。设置了value以后重新给input赋值。赋值以后再触发onChange 。这不就是死循环了么。但是没有出现死循环。而且React官方也比较推荐这种写法--请问源码是怎么处理的呢

    0
    打赏
    收藏
    点击回答
        全部回答
    • 0
    更多回答
    扫一扫访问手机版
    • 回到顶部
    • 回到顶部