victorzadorozhnyy
@victorzadorozhnyy

Как кнопку setState в элементе, который будет менять стейт в элементе уровнем выше?

Есть вот такое приложение
import { UserFirstForm } from './UserFirstForm'; Здесь декларировать передачу стейта?
import { UserHome } from './UserHome'; 
import....

class GridView extends Component {
    constructor(...args) {
        super(...args);
        this.state = {
            form: <UserFirstForm/> или Здесь декларировать передачу стейта?
        };
    }
    render() {
        return (
            <div>
                     {this.state.form}
                     <Button  onClick={() => this.setState({ form: <NewPatient/> })} ></Button>
            </div>
        );
    }
}

export class App extends Component {
    render() {
        return (
            <GridView/>
        );
    }
}

В данном случае кнопка менает стейт в своем родительском элементе, а хочу сделать <UserFirstForm/> <UserFirstForm /> и прочие, что бы они меняли стейт в родительском. Как должно мыглядеть декларирование параметра, что бы стейт принимал значение children?
export class UserHome extends Component {
    constructor(...args) {
        super(...args);
        this.state = {
             Как задекларировать стейт? :  что то принимает за значение....
        };
    }

    render() {
        return (
            <div>
                <ButtonGroup justified>
                    <Button onClick={????} >Patient<br/>Service</Button>
                    <Button onClick={????} >Non-patient<br/>Service</Button>
                    <Button onClick={????} >Engagement</Button>
                </ButtonGroup>
            </div>
        );
    }
}
  • Вопрос задан
  • 2521 просмотр
Пригласить эксперта
Ответы на вопрос 2
@Aves
Сделать метод в родительском компоненте и передать его в дочерний в props.
Ответ написан
SPAHI4
@SPAHI4
реактовцы - это не девы, а прокидыватели пропсов
Думаю, в данном случае есть смысл использовать router, и для каждого состояния просто менять url
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы