如何实现 useDropzone 钩子而不是 <Dropzone /> (组件)与 react-final-form

Posted

技术标签:

【中文标题】如何实现 useDropzone 钩子而不是 <Dropzone /> (组件)与 react-final-form【英文标题】:Does anyone know how to implement useDropzone hook and not <Dropzone /> (component) together with react-final-form有谁知道 【发布时间】:2020-06-02 16:21:49 【问题描述】:

例如 如果我有

const ImageInput = (fieldPropsFromFinalForm) => 
    const  getRootProps, getInputProps, open  = useDropzone( onDrop, accept: 'image/jpeg, image/png' );
    .
    .
    .
    return (<input ...getInputProps() ...fieldPropsFromFinalForm /> )

 

这种方式输入并不明显,但我不知道如何使其工作如何一起处理它们。我是新手,我希望我没有问错问题。

【问题讨论】:

【参考方案1】:

你必须在onDrop回调中调用fieldPropsFromFinalFormonChange

请以this沙箱为例

请找到&lt;ImageInput/&gt; 组件的代码

图像输入

 const ImageInput = props => 
  const onDrop = useCallback(acceptedFiles => 
    // Do something with the files
    props.input.onChange(acceptedFiles);
  , []);
  const  getRootProps, getInputProps, isDragActive  = useDropzone(
    onDrop,
    accept: "image/jpeg, image/png"
  );
  return (
    <div ...getRootProps()>
      <input ...getInputProps() ...props />
      isDragActive ? (
        <p>Drop the files here ...</p>
      ) : (
        <p>Drag 'n' drop some files here, or click to select files</p>
      )
      props.input.value
        ? props.input.value.map(file => 
            return <div>file.path</div>;
          )
        : null
    </div>
  );
;

示例表格

function SampleForm() 
  const onSubmit = values => 
    alert(JSON.stringify(values));
  ;
  return (
    <div>
      <Form onSubmit=onSubmit>
        props => (
          <form onSubmit=props.handleSubmit>
            <Field name="myField">
              props => (
                <div>
                  <ImageInput ...props />
                </div>
              )
            </Field>
            <button type="submit">Submit</button>
          </form>
        )
      </Form>
    </div>
  );

【讨论】:

以上是关于如何实现 useDropzone 钩子而不是 <Dropzone /> (组件)与 react-final-form的主要内容,如果未能解决你的问题,请参考以下文章

php钩子加反射实现aop

通过钩子而不是使用模板将视图中的字段替换为图像的方法

Hive 如何实现钩子 Hooks

Hive 如何实现钩子 Hooks

Hive 如何实现钩子 Hooks

如何在反应中使用带有useState钩子的回调[重复]