javascript - 如何使用 useAsync Hook 将数据附加到组件?

标签 javascript reactjs react-async

我正在使用 react-async 从 api 中获取数据,如下所示:

import {useAsync} from 'react-async'

const getOrders = () => ...

const MyComponent = () => {
  const { data, error, isLoading } = useAsync({ promiseFn: getOrders })
  if (isLoading) return "Loading..."
  if (error) return `Oopsi`
  if (data)
    return (
      <div>
        <pre>{JSON.stringify(data, null, 2)}</pre>
      </div>
    )
  return null
}

现在,如何更新 data(将下一个响应附加到它)? 应该是这样的:

import {useAsync} from 'react-async'

const getOrders = (page) => ...

const MyComponent = () => {
  const [page, setPage] = React.useState(1);
  const { data, error, isLoading } = useAsync({ promiseFn: getOrders, page: page })

  if (isLoading) return "Loading..."
  if (error) return `Oopsi`
  if (data)
    return (
      <div>
        <pre>{JSON.stringify(data, null, 2)}</pre>
        <button onClick={() => {
                setPage(page + 1);
                getOrders()
                }>Get more orders</button>
      </div>
    )
  return null
}

最佳答案

这目前还没有内置到 React Async 中。唯一的方法是保留您自己的数据记录(使用单独的 useState)并在 React Async 的 onResolve 处理程序中更新它。

我在这里为您设置了一个示例:https://codesandbox.io/s/react-async-pagination-og13b

跟踪此功能请求已经有问题:https://github.com/async-library/react-async/issues/103

关于javascript - 如何使用 useAsync Hook 将数据附加到组件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57257463/

相关文章:

javascript - 使用 useEffect 发出 Jest Act 警告

javascript - 如何获取从 map 函数生成的列表项的键?

reactjs - 如何使用 Typescript 和 styled-components 创建 ref

node.js - 从 ReactJS 外部渲染组件

reactjs - React-Select Async loadOptions 未正确加载选项

javascript - 如何在 jQuery 自定义插件中访问用于关闭的局部变量?

javascript - SVG 到 Canvas 与 canvg 不尊重 css

javascript - 这个 Javascript 注册代码有什么作用?

javascript - 如何缩放以使容器也增长并占用空间

javascript - 使用 React.Lazy 的动态延迟加载 (16.6.0)