【发布时间】:2018-06-02 11:45:14
【问题描述】:
我有一个 React 组件,它呈现 <ul> 并根据状态插入 <li> 元素。
class SimpleComponent extends React.Component {
constructor(props) {
this.state = { menu_items: [name: "First", id: 10] }
this.clickMenu = this.clickMenu.bind(this)
}
generateLinks() {
let to_return='';
for (var i=0;i<this.state.menu_items.length; i++) {
to_return = to_return + `<li><a onclick={clickMenu}> ${this.state.menu_item[i]['name']} </a></li>`
}
return to_return;
}
clickMenu(e) {
console.log(e.target)
}
render() {
return(
<ul dangerouslySetInnerHTML={this.generateLinks()}></ul>
)
}
}
当我点击 Anchor 时,控制台显示 Uncaught ReferenceError: clickMenu not defined。我尝试使用 this.clickMenu 代替,但没有任何反应。我注意到渲染的锚看起来像:
<a onclick="{menuClick}">
有没有办法创建这些锚元素,让 React 获取 onClick 定义,而不是将它们传递给浏览器进行解释?
【问题讨论】:
-
为什么不从
generateLinks中取出clickMenu并使其成为自己的原型元素呢?然后您可以将其用作this.clickMenu -
我正在尝试生成一个在单击时调用 this.clickMenu 的锚。 clickMenu 我相信这意味着它是一个原型元素。我无法弄清楚原型元素到底是什么。
-
抱歉措辞令人困惑。我想尽可能的技术。当我说原型元素时,我的意思是“类方法”。 JavaScript 没有真正的类,因此这样称呼它从根本上说是不正确的。
标签: javascript reactjs onclick anchor react-class-based-component