javascript - 比之前的渲染 REACT.js 渲染了更多的钩子
问题描述
我有一个问题,我正在尝试为通过 redux 设置的另一个 const (countryLabel) 设置一个状态 (selectedPathway) 的值。
一旦设置了“selectedPatway”,我想在<Select value={selectedPathway} />
这个选择中显示结果是由围绕所有逻辑的主要组件返回的。
一切正常,但是当我刷新页面时,我在浏览器中看到“渲染的钩子比上一次渲染时更多”。这是代码:
const DefaultValue = () => {
let matchingOption = options.find((option) => option.value.includes(countryLabel))
let optionSelected = options.find((option) => option.value === value)
const [selectedPathway, changeSelectedPathway] = useState(matchingOption)
useEffect(() => {
let test = []
if(matchingOption) {
test = matchingOption
} else {
test = options[0]
}
changeSelectedPathway(test)
},[countryLabel])
useEffect(() => {
changeSelectedPathway(optionSelected)
},[value])
return selectedPathway
}
return (
<Select
value={DefaultValue()}
/>
)
我浏览了整个互联网,我认为我已经正确应用了所有内容(显然不是因为它不起作用......)。
- 不有条件地调用钩子
- 在顶层使用钩子
任何帮助将不胜感激。
解决方案
虽然没有导致这个显式错误,countryHasChanged
并且UsePrevious
都是钩子(因为它们调用其他钩子),但没有写成那些。Hooks必须use
以小写字母开头u
。一般来说,我建议你启用 eslint 和 react hooks eslint 规则(如果你使用 create-react-app,可能是预先配置的),因为该扩展可能会告诉你项目中的大量其他 hooks 违规,最终也会向您显示触发此错误的钩子违规的来源。
此外,请重新阅读“Hooks 规则”文档页面。
推荐阅读
- python - 为什么“sort_values”不能正常工作?
- reactjs - 在反应选择中排序
- reporting-services - SSRS 矩阵到 Excel 导出创建附加行
- php - SQL - 如何根据 MAX 日期和 GROUP BY 获取结果
- r - Ggraph节点颜色以匹配边缘颜色
- arrays - 从数组值中删除引号
- sql-server - 当我在 SQL Server 中进行分组时,如何跳过只有一个条目的 max 函数
- html - 如何在减少 text_field 宽度的同时将表单列中的 text_field 中心与同一行中的按钮对齐?
- c# - Linq 查询以限制分组
- java - 检查 LogCat 是否已经在运行