是否有一种简化的方法来检查数据是否呈现?
Is there a simplified way of checking if the data renders?
在第一次渲染中获取未定义的数据时,我们使用短路 &&
运算符,例如 data && data.doSomething
来检查它是否已经渲染以便执行其他操作,我们会得到一个错误。
因此,如果你有 n 个不同的循环取决于该数据,这意味着你必须在循环之前检查它 n 次
示例:你正在循环该数据 3 次所以你需要检查3次。
data && data.map
data && data.reduce
data && data.filter
这有点重复,特别是如果你还有依赖于该数据的组件 data && <Component />
我尝试将数据放在 useEffect(setData) 上并从状态中获取数据,您仍然需要检查它。
正在获取状态
data = useSelector(state => state.data)
第一个循环获取所有用户
const allUser = data && data.map.(data => data.user)
第二个循环过滤用户
const allAge = allUser && allUser.filter(user => user.age > 18)
等等。
如您所见,第一个循环取决于获取数据(data),第二个循环取决于第二个循环(allUser)。所以你必须链式检查 it.I 知道你可以在组合映射和过滤器中得到它,但假设你需要这样做。
您可以使用 optional chaining,它在主要的 React 启动器(CRA、Gatsby、Next.js)中开箱即用。
const App = ({ data }) => {
return (
<>
{data?.map()}
{data?.reduce()}
{data?.filter()}
{!data && <LoadingComponent />}
</>
);
};
在第一次渲染中获取未定义的数据时,我们使用短路 &&
运算符,例如 data && data.doSomething
来检查它是否已经渲染以便执行其他操作,我们会得到一个错误。
因此,如果你有 n 个不同的循环取决于该数据,这意味着你必须在循环之前检查它 n 次
示例:你正在循环该数据 3 次所以你需要检查3次。
data && data.map
data && data.reduce
data && data.filter
这有点重复,特别是如果你还有依赖于该数据的组件 data && <Component />
我尝试将数据放在 useEffect(setData) 上并从状态中获取数据,您仍然需要检查它。
正在获取状态
data = useSelector(state => state.data)
第一个循环获取所有用户
const allUser = data && data.map.(data => data.user)
第二个循环过滤用户
const allAge = allUser && allUser.filter(user => user.age > 18)
等等。
如您所见,第一个循环取决于获取数据(data),第二个循环取决于第二个循环(allUser)。所以你必须链式检查 it.I 知道你可以在组合映射和过滤器中得到它,但假设你需要这样做。
您可以使用 optional chaining,它在主要的 React 启动器(CRA、Gatsby、Next.js)中开箱即用。
const App = ({ data }) => {
return (
<>
{data?.map()}
{data?.reduce()}
{data?.filter()}
{!data && <LoadingComponent />}
</>
);
};