#javascript #reactjs #api #react-hooks
Вопрос:
У меня есть эта подложка, которая возвращает мне ключ (верифицированный код), который я должен использовать в другом компоненте. Как я могу передать этот код проверки другому компоненту?
const SendForm = ({ someValues }) => {
const handleSubmitAccount = () => {
dispatch(createAccount(id, username))
.then((response) => {
// I get this value from data.response, its works
const { verifyCode } = response;
})
.catch(() => {
});
};
return(
//the form with handleSubmitAccount()
)
}
export default SendForm;
Другой компонент не является дочерним компонентом, он загружается после этого шага отправки. Но я не знаю, как это передать const verifyCode
.
Это представление, в котором загружаются компоненты, это пошаговое представление, один загружается за другим, мне нужно получить код проверки const в подтверждении формы
<SendForm onSubmit={handleStepSubmit} onFieldSubmit={handleFieldSubmit} />
<FormConfirmation onSubmit={handleStepSubmit} onFieldSubmit={handleFieldSubmit} />
Кто-нибудь знает, как я могу это сделать?
Комментарии:
1. Вам нужно будет сохранить какое-то состояние на более высоком уровне (либо общее родительское, либо глобальное), и оно установит его там. Где по отношению к этому находится другой компонент?
Ответ №1:
Вам нужно переместить состояние вверх к компоненту, который имеет как дочерние элементы, а затем передать функцию, которая обновляется как опора
import React from "react";
export default function App() {
const [value, setValue] = React.useState(0);
return (
<div className="App">
<Updater onClick={() => setValue(value 1)} />
<ValueDisplay number={value} />
</div>
);
}
const Updater = (props) => <div onClick={props.onClick}>Update State</div>;
const ValueDisplay = (props) => <div>{props.number}</div>;
Ознакомьтесь с документами здесь
Для более сложных структур компонентов или там, где вы проходите много уровней, вы, возможно, захотите изучить reactContext
import React from "react";
//Set Default Context
const valueContext = React.createContext({ value: 0, setValue: undefined });
export default function App() {
const [value, setValue] = React.useState(0);
return (
<div className="App">
{/** Pass in state and setter as value */}
<valueContext.Provider value={{ value: value, setValue }}>
<Updater />
<ValueDisplay />
</valueContext.Provider>
</div>
);
}
const Updater = () => {
/** Access context with hook */
const context = React.useContext(valueContext);
return (
<div onClick={() => context.setValue(context.value 1)}>Update State</div>
);
};
const ValueDisplay = () => {
/** Access context with hook */
const context = React.useContext(valueContext);
return <div>{context?.value}</div>;
};