代码之家  ›  专栏  ›  技术社区  ›  sergioac

如何在react js中使用带有自定义钩子的表单数据?

  •  0
  • sergioac  · 技术社区  · 2 年前

    我有自己定制的axios钩子,可以在不发送文件的情况下发送数据,但在发送文件时,它无法识别任何数据。

    ......
    const axiosFetch = async (params) => {
    const { method, url, data } = params;
    try {
      setLoading(true);
      const control = new AbortController();
      setController(control);
    
      const res = await axios[method.toLowerCase()](url, {
        ...data,
        signal: control.signal,
      });
    
      setResponse(res.data);
    } catch (err) {
      setError(err);
    } finally {
      setLoading(false);
    }
    };
    ......
    

    如果我修改了这个部分,文件上传会正常工作,但会丢失 信号 .如何实现这两个属性。

       const res = await axios[method.toLowerCase()](url, data);
    
    1 回复  |  直到 2 年前
        1
  •  0
  •   Drew Reese    2 年前

    对于POST、PUT和PATCH请求,数据和配置是第二个和第三个参数。

    看见 Instance Methods

    试试看:

    const res = await axios[method.toLowerCase()](
      url,
      data,
      { signal: control.signal }
    );
    

    对于GET、DELETE、HEAD和OPTIONS请求,省略data参数。

    const res = await axios[method.toLowerCase()](
      url,
      { signal: control.signal }
    );
    

    您需要在逻辑上拆分这些请求类型。

    或者,你可以使用 request config :

    const res = await axios({
      url,
      method: method.toLowerCase(),
      data,
      signal: control.signal,
    });