Mad*_*dav 5 html javascript reactjs
我有一个 html 代码,我可以用 jsx 重写它
<div id="parent">
<div id="child" onclick="this.parentElement.style.background = 'orange';">
<img src="img/img2.png"></img>
</div>
</div>;
Run Code Online (Sandbox Code Playgroud)
这里,在jsx中,this指的是react组件。但是,在上面的 html 代码中,this指的是#child.
谁能告诉我如何#child在不编写单独的处理程序函数的情况下编写 jsx 中的 onclick 代码,但与上面编写的方法相同。
小智 4
正如我到目前为止所发现的,没有办法像你所描述的那样构建 React 事件,但我对此进行了尝试并发现了一些有趣的事情:
要将这一行更改为 JSX,您必须将onclick事件替换为onClick,然后从内联 JavaScript 中删除引号并将其包含在数字括号中。所以它应该是这样的:
render: function() {
return <div id="parent">
<input type='button' id="child" onClick={console.log(this)} value='Click Me'/>
</div>;
}
Run Code Online (Sandbox Code Playgroud)
但这里有一个问题,当您的组件安装时,它仅运行此事件一次。 这里我留下一个小提琴示例,您可以在其中使用它。
更新
答案是,你可以在 JSX 中编写内联事件处理程序,正如我所说,只需将你的代码包装到下面的数字括号中即可,这里有一个小提琴:
<input type='button' id="child" onClick={function(e){e.currentTarget.parentElement.style.background = 'red'; }} value='Click Me'/>
Run Code Online (Sandbox Code Playgroud)
谢谢,我希望它能帮助你