如何从 React js 中的项目数组中获取当前值 onClick?
How to get current value onClick from an array of items in React js?
我有一个颜色列表,我试图从列表中获取当前颜色 onClick,但我却获取了整个颜色列表。我有一个子组件,我在其中映射数组:
function Child({colorList, setBackgroundColor}){
return(
<Box>
{colorList.map((i,key)=>
<List key={key}>
<ListItem >
<IconButton icon={<FiCircle fill={i}/>} onClick={setBackgroundColor} color={i}/>
</ListItem>
</List>
</Box>
)
}
我正在传递父组件中的值:
function Parent(){
const [bgColor,setBgColor] = useState('')
const [colorList, setColorList] = useState(['blue','red','green'])
function setBackgroundColor(){
const selectedValue = colorList.filter((color,key)=>color[key])
setBgColor(selectedValue)
console.log(bgColor)
}
return(
<Child colorList={colorList} setBackgroundColor={setBackgroundColor}/>
)
}
当我显式传递索引时 setBgColor(selectedValue[0])
它起作用了。有人可以帮我理解我做错了什么吗?如有任何帮助,我们将不胜感激!
首先 - 不要将 map 方法中的第一个参数称为“i”
如果你为颜色做地图那么它是 'color'
其次 - 你可以这样写:
<IconButton
icon={<FiCircle fill={i} />}
onClick={() => {
setBackgroundColor(i);
}}
color={i}
/>
你的函数 setBackgroundColor 会在你点击它时得到你的颜色
我有一个颜色列表,我试图从列表中获取当前颜色 onClick,但我却获取了整个颜色列表。我有一个子组件,我在其中映射数组:
function Child({colorList, setBackgroundColor}){
return(
<Box>
{colorList.map((i,key)=>
<List key={key}>
<ListItem >
<IconButton icon={<FiCircle fill={i}/>} onClick={setBackgroundColor} color={i}/>
</ListItem>
</List>
</Box>
)
}
我正在传递父组件中的值:
function Parent(){
const [bgColor,setBgColor] = useState('')
const [colorList, setColorList] = useState(['blue','red','green'])
function setBackgroundColor(){
const selectedValue = colorList.filter((color,key)=>color[key])
setBgColor(selectedValue)
console.log(bgColor)
}
return(
<Child colorList={colorList} setBackgroundColor={setBackgroundColor}/>
)
}
当我显式传递索引时 setBgColor(selectedValue[0])
它起作用了。有人可以帮我理解我做错了什么吗?如有任何帮助,我们将不胜感激!
首先 - 不要将 map 方法中的第一个参数称为“i” 如果你为颜色做地图那么它是 'color'
其次 - 你可以这样写:
<IconButton
icon={<FiCircle fill={i} />}
onClick={() => {
setBackgroundColor(i);
}}
color={i}
/>
你的函数 setBackgroundColor 会在你点击它时得到你的颜色