如何有条件地调用钩子而不会出现“比以前的渲染期间渲染了更多的钩子”错误

时间:2019-10-01 15:20:06

标签: reactjs react-native react-redux

我目前有一个呼叫屏幕:

const currentBusiness = useSelector(state => state.business.ownerBusiness)

但是,并非所有用户都拥有一家企业,因此有时useSelector找不到业务,这意味着currentBusiness将为false,有时将为true(取决于登录用户)。

在此挂接呼叫下,我有另一个挂接呼叫

const employeeArray = useSelector(state => state.employees.availableEmployees.filter(employee => employee.businessId === currentBusiness.Id));

第二个useSelector依赖于第一个useSelector实际上返回一些东西,因为它在filter方法中使用currentBusiness.Id。

我有两个问题:

  1. 如果我将第二个useSelector放在if的条件下的currentBusiness === true语句中,该如何在{{1 }}语句,因为我的VSCode向我显示,一旦嵌套在employeeArray语句中,我就只能在其中调用它。

  2. 在我解决了第一个问题的情况下,如何防止出现“渲染的钩子比上次渲染期间更多的钩子”错误,因为如果currentBusiness为false,我将不会执行ifif语句中(我将渲染一个特定的屏幕),但是当它为true时,我将执行另一个导致错误的钩子。 (我将呈现另一个屏幕,列出所有当前雇员)。

感谢您的帮助。 谢谢

0 个答案:

没有答案