React 受控组件

#1
class Input extends React.Component{
    constructor(props){
        super(props);
        this.state = {
            value: ''
        };
        this.putChange = this.putChange.bind(this);
    }

    putChange(event){
        this.setState({
            value: event.target.value
        })
    }

    render(){
        return (
            <label>
                <input type="text" placeholder={this.props.placeholder}
                       value={this.state.value}
                       onChange={() => this.putChange(event)}/>
            </label>

        );
    }
}

A component is changing a controlled input of type text to be uncontrolled. Input elements should not switch from controlled to uncontrolled (or vice versa). Decide between using a controlled or uncontrolled input element for the lifetime of the component. More info:
组件正在更改类型文本的受控输入以不受控制。输入元件不应该从受控切换到未控制(反之亦然)。决定使用一个受控的或未受控的输入元件来使用组件的寿命

这是什么情况?

#2

首先你这是矛盾的,onChange Value发生变化触发事件,但是没有value变化所以值不变, 你直接又赋值给value 所以值没有办法进行改变。

#3

请问下楼主的问题解决了吗?我遇到一样的问题。。

#4

input 不要给定 value。
1、改变value才会触发change
2、change之后才会改变value
这不就矛盾了

每次change只把值记录下来,在需要用的地方调用就行了。 如果要保证进来之后又一定的数据。那么你就用 defaultValue