【发布时间】:2019-01-24 19:01:13
【问题描述】:
我正在使用 ReactJS。
我正在尝试获取我的 ReactJS 组件的自定义属性 -name-。 e.target.name 在我的控制台上返回“未定义”。
我不知道为什么。
这是我的 sn-p-you can test it on CodeSandbox。 更新:sn-p 已更新为有效的解决方案。在编写这些行时,我使用 React 16.4.2 + NextJS 6.1.1。
export default class view_recipes extends Component {
state={
displayCategoryMenu:true,
displayBox1: false,
displayBox2: false,
displayBox3: false,
displayBox4: false,
displayBox5: false,
displayBox6: false,
};
handleDisplaying = (e) => {
e.preventDefault();
console.log("EVENT: ", e.currentTarget.attributes.reactname.value )
let display = {
displayCategoryMenu:false,
displayBox1: false,
displayBox2: false,
displayBox3: false,
displayBox4: false,
displayBox5: false,
displayBox6: false,
};
console.log("display: ", display)
}
render() {
return (
<Layout>
<div className={style.page}>
<div
style={this.state.displayCategoryMenu? {} : { display: 'none' }}
className={style.category_grid} >
<div reactname="displayBox1" onClick={(e) => this.handleDisplaying(e)} >
<Populater_s_ComponentHere />
</div>
</div>
// The functionalities above determine if I display this component
<div
style={this.state.displayBox1 ? {} : { display: 'none' }}
>
<SomeComponentHere />
</div>
</div>
</Layout>
)
}
}
Devin Fields 和 Hemari Davari 的解决方案在上述 sn-p 上效果很好。可悲的是,我的代码块似乎带有这些伟大的解决方案。因此,我重构了我的沙箱,使其更接近我的代码的实际情况。您将看到属性返回未定义。
这里是重构的代码片段:https://codesandbox.io/s/l5k5ynv9vq。
谢谢
【问题讨论】:
标签: javascript reactjs