无法理解 Formik 中道具访问的语法
Trouble Understanding Syntax for Props Access in Formik
在为 <Formik />
here 给出的示例中,我们可以使用以下代码访问儿童的 Formik 上下文道具:
import React from 'react';
import { Formik } from 'formik';
const BasicExample = () => (
<div>
<h1>My Form</h1>
<Formik
initialValues={{ name: 'jared' }}
onSubmit={(values, actions) => {
setTimeout(() => {
alert(JSON.stringify(values, null, 2));
actions.setSubmitting(false);
}, 1000);
}}
>
{props => (
<form onSubmit={props.handleSubmit}>
<input
type="text"
onChange={props.handleChange}
onBlur={props.handleBlur}
value={props.values.name}
name="name"
/>
{props.errors.name && <div id="feedback">{props.errors.name}</div>}
<button type="submit">Submit</button>
</form>
)}
</Formik>
</div>
);
我在理解这里发生的事情时遇到问题:
>
{props => (
这个'props'是从哪里来的,这是什么语法。我有一种感觉 <Formik />
的语法糖让我更难理解。
谢谢。
你得到的道具被称为渲染道具,请参考thislink官方文档。
Render Props 是一种将 props 传递给 children
的方式
使用这种样式模式,我们将 children 渲染为一个函数,我们可以将参数传递给
以同样的方式,<Formik/>
将一些renderProps
传递给children
你可以参考this <Formik/>
组件代码,如果你想看看props是如何传递的以及children是如何渲染的
请参考this文章详细解释render props
请参考 this 代码沙箱以获取实时示例
请记住,在 JSX 中,两个标签内的任何内容都是 children。
例如
<div>
I’m the child
</div>
好吧,如果你让 children 成为一个函数呢?
<div>
{() => { console.log('The children has been executed')}
</div>
好吧,如果包装组件希望它的 children 是一个函数(就像 onClick prop 是一个函数一样)它可以调用它并在它调用时传递数据。
这是一种使用来自 child 组件的数据作为输入来确定要呈现的内容的方法。
这里的 formik 就是这样一个组件 - 它将表单道具传递给 children 函数。这也称为渲染道具。
在为 <Formik />
here 给出的示例中,我们可以使用以下代码访问儿童的 Formik 上下文道具:
import React from 'react';
import { Formik } from 'formik';
const BasicExample = () => (
<div>
<h1>My Form</h1>
<Formik
initialValues={{ name: 'jared' }}
onSubmit={(values, actions) => {
setTimeout(() => {
alert(JSON.stringify(values, null, 2));
actions.setSubmitting(false);
}, 1000);
}}
>
{props => (
<form onSubmit={props.handleSubmit}>
<input
type="text"
onChange={props.handleChange}
onBlur={props.handleBlur}
value={props.values.name}
name="name"
/>
{props.errors.name && <div id="feedback">{props.errors.name}</div>}
<button type="submit">Submit</button>
</form>
)}
</Formik>
</div>
);
我在理解这里发生的事情时遇到问题:
>
{props => (
这个'props'是从哪里来的,这是什么语法。我有一种感觉 <Formik />
的语法糖让我更难理解。
谢谢。
你得到的道具被称为渲染道具,请参考thislink官方文档。
Render Props 是一种将 props 传递给 children
的方式使用这种样式模式,我们将 children 渲染为一个函数,我们可以将参数传递给
以同样的方式,<Formik/>
将一些renderProps
传递给children
你可以参考this <Formik/>
组件代码,如果你想看看props是如何传递的以及children是如何渲染的
请参考this文章详细解释render props
请参考 this 代码沙箱以获取实时示例
请记住,在 JSX 中,两个标签内的任何内容都是 children。
例如
<div>
I’m the child
</div>
好吧,如果你让 children 成为一个函数呢?
<div>
{() => { console.log('The children has been executed')}
</div>
好吧,如果包装组件希望它的 children 是一个函数(就像 onClick prop 是一个函数一样)它可以调用它并在它调用时传递数据。
这是一种使用来自 child 组件的数据作为输入来确定要呈现的内容的方法。
这里的 formik 就是这样一个组件 - 它将表单道具传递给 children 函数。这也称为渲染道具。