как изменить состояние в контексте реакции - PullRequest
1 голос
/ 24 марта 2020

Как мне изменить состояние с истинного на ложное и с ложного на истинное?

это мой код:

import React, { createContext , useState } from 'react';

export const RegContext = createContext();

const RegContextProvider = (props) => {
    const[mode, setMode] = useState([
        { showing: false }
    ]);

    const changeMode = () => {
        setMode([...mode, { showing: !showing }]);
    };

    return (
        <RegContext.Provider value={{mode, changeMode}}>
            { props.children }
        </RegContext.Provider>
    );
}

export default RegContextProvider;

Я получил это сообщение:

'показ' не определен no-undef

Может кто-нибудь помочь мне решить эту проблему ??

1 Ответ

1 голос
/ 24 марта 2020

Если все ваше состояние mode содержит логическое значение для показа, вы можете упростить его до

const RegContextProvider = (props) => {
    const [showing, setShowing] = useState(false);

    const changeMode = () => {
        setShowing(!showing);
    };

    return (
        <RegContext.Provider value={{showing, changeMode}}>
            { props.children }
        </RegContext.Provider>
    );
}

И, чтобы быть более безопасным, поскольку changeMode зависит от предыдущее состояние вы должны использовать синтаксис обратного вызова

const changeMode = () => {
    setShowing((showing)=>!showing);
};

Демо на https://codesandbox.io/s/bold-darkness-8iscu

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...