簡體   English   中英

通過繼承React.js中的值來更改復選框的值

[英]Changing the value of a checkbox by inheriting a value in React.js

我試圖熟悉react.js中組件之間的繼承工作原理,但遇到了一些麻煩。

要求 -基本上,我想要實現的就是單擊按鈕時更改復選框的值。

該復選框繼承了'checkedVal'的值,該值在'checkedVal'中的狀態下設置。

第一次加載時,我可以在復選框中獲得正確的值,但是單擊按鈕時無法更改它。 任何想法,將不勝感激?

var Heading = React.createClass({
propTypes: {
    name: React.PropTypes.string,
    age: React.PropTypes.number
},
getDefaultProps: function(){
    return {
        name: 'Keir',
        age: 24,
    }
},
getInitialState: function(){
    return {
        manU: false,
        checkedVal: false
    }
},
manUFan: function(){
    this.setState(function(previousState, currentProps){
        return {
            manU: !previousState.manU,
            checkedVal: !previousState.checkedVal
        }
    });
},
render: function(){
    var msg;
    if(this.state.manU){
        msg = "I am a United fan."   
    } else {
        msg = "I dream of being a united fan."   
    }
    return (
        <div>
            <h1>Attempting React</h1>
            <ul>
                <li>{this.props.name}</li>
                <li>{this.props.age}</li>
            </ul>
            <button onClick={this.manUFan}>Do You Support Man U?</button>
            <CheckBox checkBoxVal={this.state.checkedVal}/>
            <p>{msg}</p>
        </div>
        )
}
});

var CheckBox = React.createClass({
    propTypes: {
        checkBoxVal: React.PropTypes.bool  
    },
    render: function(){
        return (
            <div>
                <input type="checkbox" defaultChecked={this.props.checkBoxVal}/>
            </div>
            )
    }
    });


ReactDOM.render(<Heading />, document.getElementById('content'));

defaultValue和defaultChecked道具僅在初始渲染期間使用。 如果需要在后續渲染中更新值,則需要使用受控組件。 https://facebook.github.io/react/docs/forms.html#受控組件

因此,在您的情況下,這就是實現受控CheckBox

var Heading = React.createClass({
...
    getInitialState: function(){
        return {
            checkedVal: false
        }
    },

    handleChange: function(event){
        this.setState({checkedVal: event.target.value});
    },

    render: function(){
        ...
        return (
            <div>
                ...
                <CheckBox onChange={this.handleChange} checkBoxVal={this.state.checkedVal}/>
                ...
            </div>
        );
    }
});

var CheckBox = React.createClass({
    propTypes: {
        checkBoxVal: React.PropTypes.bool  
    },

    render: function(){
        return (
            <div>
                <input type="checkbox" onChange={this.props.onChange} value={this.props.checkBoxVal}/>
            </div>
        );
    }
});

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM