是否可以在组件内使用 useEffect 更新 useMemo 记忆值?

rsg*_*mon 2 reactjs use-effect react-usememo

我正在尝试渲染必须通过的数据useMemo。我从 api 调用获取数据,因此我调用useEffect. 初始渲染工作返回一个空数组,但是一旦我调用 api,数据就不会更新。

import React from 'react'
import {fetchAccounts} from '../utils/api'

export default function Accounts() {
    const [accounts, setAccounts] = React.useState([])

React.useEffect(() => {
    setLoading(true)
    fetchAccounts().then((data) => {
        setAccounts(data)
    })
}, [])
const data = React.useMemo(() => accounts, [])

return <p>{JSON.stringify(data)}</p>}
Run Code Online (Sandbox Code Playgroud)

那么这可以在单个组件中工作吗?或者必须创建自定义挂钩?

Den*_*ash 6

由于依赖项数组中缺少值,因此数据未更新。

const data = React.useMemo(() => accounts, [accounts]);
Run Code Online (Sandbox Code Playgroud)

因此在这种情况下,使用它是没有意义的,useMemo因为无论如何状态都是稳定的,直到你改变状态。