#javascript #reactjs #formik
Вопрос:
Я использую Formik в своем приложении React и не уверен, как передать значение Formik в качестве параметра в функцию.
Допустим, у меня есть следующие значения Formik:
"props": {
"myJobName": "ABC"
}
В моем теге кнопки, который все живет в моих <Formik>
<Form>
тегах и, я пытаюсь позвонить setJobContent
и передать values.myJobName
<Button
onClick={()=> {
setJobContent({values.myJobName})
}}
/>
Click
</Button>
У меня также есть следующая функция за пределами моих <Formik>
<Form>
тегов и:
const setJobContent = (jobName) => {
// do something
// return something
}
Не уверен, возможно ли это, и если да, был бы признателен за вашу помощь.
Ответ №1:
если вы хотите получить только «myJobName» в функции setJobContent, вам нужно пройти setJobContent(values.myJobName)
вот так.
Комментарии:
1. К сожалению, когда я делаю это и регистрирую результат параметра в консоли, он равен нулю, т. Е.
values.myJobName
— может ли это быть связано с тем, что это функция внеFormik
тегов?2. Функция вне тегов Formik в вашем случае не имеет значения, потому что вы переходите
values.myJobName
в функцию setJobContent, поэтому при нажатии на кнопку вы получите значение myJobName в функции seJobContent. Убедитесь, что вы используетеinitialValues={{ myJobName: 'ABC' }}
в Formik.
Ответ №2:
Это то поведение, которого вы хотели? https://codesandbox.io/live/jpr5fj3
export default function App() {
const setJobContent = (jobName) => {
alert(jobName);
};
return (
<div className="App">
<Formik initialValues={{ myJobName: "test" }}>
{({ values, handleChange }) => (
<form>
<input
type="text"
name="myJobName"
onChange={handleChange}
value={values.myJobName}
/>
<em>{JSON.stringify(values, null, 2)}</em>
<button
type="button"
onClick={() => setJobContent(values.myJobName)}
>
Submit
</button>
</form>
)}
</Formik>
</div>
);
}`