Образует как функциональные компоненты с реакцией - PullRequest
0 голосов
/ 28 ноября 2018

Если я хочу создать функциональный компонент, который будет содержать форму, например, для входа в систему, и я хочу содержать состояние в компоненте приложения, а имя входа будет его дочерним, могу ли я изменить состояние в приложении, используя форму вЛогин ребенка?

Ответы [ 3 ]

0 голосов
/ 28 ноября 2018

Чтобы изменить свойства в состоянии родительского компонента от дочернего компонента, вы можете отправить функцию в качестве Prop для дочернего компонента.

Родительский компонент:

class Parent extends React.Component {
    // Parent state
    this.state = {
        someState: false
    }

    // This method will be sent to the child
    handler = () => {
        this.setState({ someState: true });
    }

    // Set the action property with the handler as value
    render() {
        return <Child action={this.handler} />
    }
}

Дочерний компонент:

// onClick executes the handler function set by the parent component
const Child = ({ action }) => (
    <Button onClick={action} />
);
0 голосов
/ 28 ноября 2018

Да, это возможно.Вам просто нужно передать опору вашему дочернему компоненту.Вот пример того, как это сделать:

// in parent component

handleChange(updatedData) {
  this.setstate({
    data: updatedData
  })
}

// in render method
<Login handleChange={this.handleChange}/>

// in child component

// calling the handleChange function
this.props.handleChange(newData)
0 голосов
/ 28 ноября 2018

Да.Передайте два объекта объекту data и метод onChange в Login из App.data установит значения для формы в Login.

Огонь onChange с обновленными значениями формы, если есть какие-либо изменения в форме Login.

Обработайте его в App и обновите его состояние, которое затем опустится до Loginкак data.

...