2015-09-17 5 views
0

Я ищу способ для двух компонентов разговаривать друг с другом. Я просто хочу, чтобы, когда <InputCheckboxAll/> проверен или снят, он будет проверять или отменять все компоненты <InputCheckbox/>.Доступ к другим компонентам refs изнутри компонента

var InputCheckboxAll = React.createClass({ 
    render: function() { 
    return (
     <input type='checkbox' {...this.props}/> 
    ) 
    } 
}) 

var InputCheckbox = React.createClass({ 
    render: function() { 
    return (
     <input type='checkbox' {...this.props}/> 
    ) 
    } 
}) 

<InputCheckboxAll ref='masterCheckbox'/> 
<InputCheckbox masterRef='masterCheckbox'/> 
<InputCheckbox masterRef='masterCheckbox'/> 
<InputCheckbox masterRef='masterCheckbox'/> 

Как внутри <InputCheckboxAll> компонента можно выбрать все реф с masterCheckbox на йоте?

ответ

1

Пропустить обработчик для InputCheckboxВсе и указать InputCheckbox.

var InputCheckboxAll = React.createClass({ 
     handleChange: function(event) { 
      this.props.handleChange(event); 
     }, 
     render: function() { 
     return (
      <input type='checkbox' {...this.props} onChange={this.handleChange} /> 
     ) 
     } 
    }) 

    var InputCheckbox = React.createClass({ 
     render: function() { 
      var checkedValue = this.props.allChecked ? true : this.state.checked; 
     return (
      <input checked={checkedValue} type='checkbox' {...this.props}/> 
     ) 
     } 
    }) 

    var CheckMaster = React.createClass({ 
     getInitialState: function() { return {allChecked: false}; }, 
     handleChange: function(event) { 
      this.setState({allChecked: event.target.value}); 
     }, 
     render: function() { 
      return (
       <div> 
        <InputCheckboxAll handleChange={this.handleChange}/> 
        <InputCheckbox allChecked={this.state.allChecked}/> 
        <InputCheckbox allChecked={this.state.allChecked}/> 
        <InputCheckbox allChecked={this.state.allChecked}/> 
       </div> 
      ) 
     } 
    }) 
+0

Спасибо за это, это здорово! Одна из проблем заключается в том, что '' требует 'getInitialState', где' checked' является ложным, однако это делает его неконтролируемым по своему усмотрению. – ThomasReggi

+0

Я проверил значение 'getInitialState'' '' '' '' this.props.checked' и исправил проблему. – ThomasReggi

+0

Скажем, все три '' проверяются, как я могу изменить значение '' для проверки? – ThomasReggi

Смежные вопросы