javascript - 如何在功能反应中获取 JSX 标签属性?
问题描述
我想了解如何在反应中访问组件标签的自定义属性。不幸的是,我在互联网上找不到任何东西,因为我找不到要搜索的内容,所以我没有得到大量解释如何将道具传递给组件的网站。
我正在使用 react-color,当颜色选择器发生变化时,它会向我发送一个“e”中的对象到 handleChange 函数。
const colorPicker = () => {
return(
<SketchPicker name="fill" onChange={handleChange} />
);
}
使用 e.hex 我可以访问十六进制的颜色,但是如何访问属性“名称”?
const handleChange = (e) => {
console.log("handleChange", e);
context.object().set({fill: e.hex}); //<- works
//context.object().set({e.name: e.hex}); doesn't work <- e.name is undefined
}
解决方案
根据文档,onChange方法可以接收两个参数,颜色(在您的示例中为e)和事件参数。尝试访问第二个并查看该属性是否可用。如果是,你很高兴,如果不是:
由于 react-color 是一个您没有从头开始创建的组件,因此了解其 props 处理方式的唯一方法是检查其内部代码并在必要时对其进行修改。您很可能不需要/不想这样做。
如果name属性很可能是动态的,则将其传递给colorPicker并通过 props.name 访问它:
<SomeComponent>
<ColorPicker name={'fill'}/>
</SomeComponent>
然后从 ColorPicker 组件中:
const handleChange = (e) => {
context.object().set({[props.name]: e.hex});
}
顺便说一句,如果您正在计算属性名称,您应该使用方括号[],例如上面的示例。
希望这可以帮助。
推荐阅读
- node.js - 获取有关我的频道的数据(YouTube 数据 API v3 + Node.js)
- ios - 无法更新 XCode:需要 MacOS 10.15.4 或更高版本
- swiftui - 在 SwiftUI 的 TabView 中显示选定的选项卡
- linux - 在命令行中使用单引号作为密码
- c++ - 在不打开外部程序/窗口 C++ 的情况下获取 ping
- java - 主进程结束后如何运行子进程
- c - c 随机 int 类型
- java - 如何使正则表达式仅匹配 excat 邮政编码?
- android - Paint 对象的 alpha 从 float 到 int 的转换
- image - Flutter drawImage canvas一直报错对象已被处理