使用RecoilJS通过API发布数据

三藩

RecoilJS文档中,有一个如何处理异步数据查询示例,但这仅与获取数据有关。

假设我有一个简单的状态:

const accountState = atom({
  key: "accountState",
  default: {
    id: "",
    name: "",
  }
});

还有一个组件是注册表:

const RegisterForm = () => {
  return (
    <form>
      <input type="text" name="username" />
      <button type="submit">Register</button>
    </form>
  )
}

发布的数据在中FormData成功创建新帐户后,服务器将发送包含idname响应

{
  "id": "abcdef123456",
  "name": "example"
}

此响应数据将设置为的新状态accountState

我该如何处理RecoilJS

Ewe Tek Min

您可以只处理http请求,并将响应设置为状态。

const RegisterForm = () => {
  const [account, setAccount] = useRecoilState(accountState);

  const handleSubmit = async e => {
    e.preventDefault();

    const response = await fetch(url, {
      method: 'POST',
      body: data,
    });

    const responseJson = await response.json();
    setAccount(responseJson);
  };

  return (
    <form onSubmit={handleSubmit}>
      <input type="text" name="username" />
      <button type="submit">Register</button>
    </form>
  );
}

编辑

为了有一种可重用的方法,我建议您构建自定义的钩子,以便经常使用

const useRegister = () => {
  const setAccount = useSetRecoilState(accountState);

  const register = useCallback(async (username)=> {
    const response = await fetch(url, {
      method: 'POST',
      body: { username },
    });

    const responseJson = await response.json();
    setAccount(responseJson);
  }, [setAccount]);

  return register;

}

const RegisterForm = () => {
  const register = useRegister();

  const handleSubmit = async e => {
    e.preventDefault();

    await register(username);
  };

  return (
    <form onSubmit={handleSubmit}>
      <input type="text" name="username" />
      <button type="submit">Register</button>
    </form>
  );
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何使用VBScript通过HTTP API发布JSON数据?

来自分类Dev

Angular9使用HttpClient通过表单数据将数据发布到API

来自分类Dev

C# 如何通过 Facebook API 使用多个 POST 请求发布数据

来自分类Dev

无法使用JavaScript Fetch API发布数据

来自分类Dev

在Vue中使用Axios Api发布数据

来自分类Dev

通过AJAX发布数据

来自分类Dev

如何通过Trello API发布和检索评论卡数据?

来自分类Dev

通过PHP将JSON数据发布到API

来自分类Dev

使用余烬数据通过发布保存多个记录

来自分类Dev

通过AJAX使用JSON数据发布到php

来自分类Dev

使用边界通过HTTP发布多个数据

来自分类Dev

Laravel通过API使用API检查数据

来自分类Dev

使用php通过Twitter API发布图像和状态

来自分类Dev

从 shapefile 发布数据的 API

来自分类Dev

通过休息发布表格数据

来自分类Dev

通过jQuery Issue发布数据

来自分类Dev

通过AWS API Gateway发布表单数据和二进制数据

来自分类Dev

通过AJAX发布API的响应

来自分类Dev

通过Api的ServiceStack发布/订阅

来自分类Dev

如何通过NSURLSession发布API?

来自分类Dev

无法通过 REST API 发布

来自分类Dev

使用Python将文件和数据发布到API

来自分类常见问题

如何使用提取API发布表单数据?

来自分类Dev

如何使用HttpClient将JSON数据发布到Web API

来自分类Dev

使用Python将文件和数据发布到API

来自分类Dev

如何使用JavaScript和Json将数据发布到api?

来自分类Dev

将JSON发布到API并使用PHP检索数据

来自分类Dev

使用asp.net Web API发布数据

来自分类Dev

如何使用HttpClient将JSON数据发布到Web API