2017-01-16 9 views
1

Я создал три основных компонента.React.js передает данные между потоками компонентов

A отображает как компоненты B, так и C B как вкладки, содержащие заголовки 1,2,3 C - первая страница, на которой представлены две формы, по одному. При отображении первой формы мне нужно показать вкладку 1 в компоненте B. При показе второй формы мне нужно отобразить вкладку 3 в компоненте B.

Я просто хочу передать данные из компонента C, на основе которого отображается компонент B.

Я положил состояние на компонент C и попытался использовать те же this.state.data или this.props.data, чтобы не было значения, входящего в контроллер B.

A.jsx

import React from 'react'; 
import B from './B.jsx'; 
import C from './C.jsx' 
class A extends React.Component { 
    constructor(props) { 
     super(); 
     this.state = { 
      show : '1', 
     } 
    } 
    render() { 
     return (
      <div>{this.props.show} 
       <B /> 
       <C/> 
      </div> 
     ) 
    } 
} 

export default A; 

B.jsx

import React from 'react'; 

class B extends React.Component { 
    constructor(props) { 
     super(props); 
     this.state = { 
      show : '1', 
     } 
    } 
    render() { 
     return (
      //html code here 
     ) 
    } 
} 

C.jsx

class C extends React.Component { 
    constructor(props) { 
     super(props); 
     this.state = { 
      show : '1', 
     } 
    } 
    render() { 
     return (
      //html code here 
     ) 
    } 
} 
+0

Можете ли вы показать свой код, что вы пробовали ?? –

+0

@MayankShukla Я добавил код, чтобы понять. –

ответ

1

Я попытался создать тот же сценарий, что u описал, проверьте рабочий стол jsfiddle.

jsfiddle: https://jsfiddle.net/mj8rsawh/

Прокомментируйте это, если вы хотите какой-либо другой помощи.

+0

, не могли бы вы описать его один раз? –

+0

Что я понимаю, это добавить функцию обновления в родительский компонент. Затем передайте начальное значение компонентам с привязкой к функциям как я могу передать ему два значения? например, показывать и скрывать? Затем в компоненте chlid используйте функцию bind, чтобы обновить значение и получить его по всем трем компонентам. –

+0

У меня появилась идея, как реквизитировать и работать в родительском ребенке здесь. Спасибо –

3

Вам нужно будет добавить свое состояние в качестве родительского компонента здесь было бы Компонент затем передать функцию, чтобы изменить свои состояния на B и C, чтобы изменить свое состояние на А, как показано ниже

class A extends React.Component { 
    constructor(props) { 
     super(); 
     this.state = { 
      show : '1', 
     }; 
    } 
    changeShow(show){ 
     this.setState({show: show}); 
    } 
    render() { 
     return (
      <div>{this.props.show} 
       <B show={this.state.show}/> 
       <C handleChangeShow={this.changeShow.bind(this)} show={this.state.show}/> 
      </div> 
     ) 
    } 
} 

Теперь у вас есть доступ, чтобы показать состояние в своих дочерних компонентов и может изменить его от них, например, в C

class C extends React.Component { 
    handleChange({target}){ 
     this.props.handleChangeShow(target.value) 
    } 
    render() { 
     return (
      <select onChange={this.handleChange.bind(this)}> 
       <option value="0">hide</option> 
       <option value="1">show</option> 
      </select> 
     ) 
    } 
} 

Теперь у вас есть доступ, чтобы показать состояние в B

class B extends React.Component { 

    render() { 
     return (
      {this.props.show} 
     ) 
    } 
} 

Не было достаточно ясно, что вы пытались сделать в своем примере, поэтому я попытался привести пример того, как передать состояние между дочерним компонентом в общем смысле. Я надеюсь, что это было бы достаточно полезно

+0

У меня возникла идея, как реквизитировать и работать в родительском ребенке. Спасибо –

+0

Поляна поможет –