reactjs - 反应钩子和道具的命名约定?
问题描述
组件的 props 名称和局部状态变量名称发生冲突。是否在全球范围内遵循任何命名约定?查看“选定”的道具和状态
function Select({options,selected,onSelect}){
let [selected,setSelect]=useState(selected)
//... useeffect to update local state if props changes
function setSelectLocal(){
setSelect(e.target.value)
onSelect(e.target.value)
}
return (
<select onChange={onSelect} value={selected}>
{options.map((option)=><option>{option}</option>)}
</select>
)
}
谢谢
解决方案
我会说const [selectedValue, setSelectedValue] = useState('default value')
。
但是,更好的选择可能是让父组件处理状态并通过 props 简单地传递处理程序。
function ParentComponent() {
const [selectedValue, setSelectedValue] = useState('default value')
const onChange = (e) => {
setSelectedValue(e.target.value)
}
return (
<div>
// other stuff here
<ChildComponent options={stuff} onChange={onChange} selectedValue={selectedValue} />
</div>
)
}
function ChildComponent({ options, onChange, selectedValue }) {
return (
<select onChange={onChange} value={selectedValue}>
{options.map((option)=><option>{option}</option>)}
</select>
)
}
推荐阅读
- javascript - 使用 jQuery 将 CSS 添加到带有 alt 标签的特定图像
- html - 卡片栏。如何更改连续卡片的数量
- node.js - 除非服务器在本地机器上运行,否则应用程序无法连接到 Heroku 上的 mongodb
- java - 在 ArrayList 中找出另一个对象属于哪个对象
- c - 练习 1-21,C 编程语言,最后一行解释
- visual-studio-code - 如何使用 Visual Studio 修复实时服务器中的浏览器?
- python - 列表保留列表顺序的列表组合以获取链
- c - 为什么我应该(无效)返回 memset()?
- azure - 我如何知道应用服务已消耗 sp far RRS 提要的消耗(成本)
- ios - SwiftUI 中的 PreferredScreenEdgesDeferringSystemGestures