このコードはCodepenで動作します: https://codepen.io/pkshreeman/pen/YQNPKB?editors=001 を参照してください。ただし、これを自分の 'create-react-app'および'no-restricted-globals'のエラーはevent.target.id
によってトリガーされます。これの回避策は何ですか。イベントターゲットを使用する以外の反応で「this」からIDを取得するにはどうすればよいですか?
const Elem = (props) =>{
return (<div>
<h1 onClick={props.clickon} id="GM"> Good Morning!
<br/>
{props.name} {props.last}
<br />
This is phase three</h1>
<button id="btn1" onClick={props.clickon}> {props.text} </button>
<button id="btn2" onClick={props.clickon}> Second Button </button>
</div>
);
};
class App extends React.Component{
constructor(props) {
super(props);
this.handleClick = this.handleClick.bind(this);
}
handleClick(){
var clickedId = event.target.id;
console.log(clickedId);
alert("It works! You clicked " + clickedId)
}
render(){
return (
<Elem name = 'paul' last='shreeman' clickon={this.handleClick} text='PushMe'/>
)
}
}
ReactDOM.render(
<App />, document.getElementById('root'))
これがコードペンでも機能するのは奇妙です-グローバルevent
プロパティを使用しているようです。
これを行う正しい方法は、handleClick
関数の最初のパラメーターからイベントオブジェクトを取得することです。
handleClick(event) {
var clickedId = event.target.id;
console.log(clickedId);
alert("It works! You clicked " + clickedId)
}
おそらく、渡す関数でイベントを指定する必要があるかもしれません。
const Elem = (props) =>{
return (<div>
<h1 onClick={props.clickon} id="GM"> Good Morning!
<br/>
{props.name} {props.last}
<br />
This is phase three</h1>
<button id="btn1" onClick={props.clickon}> {props.text} </button>
<button id="btn2" onClick={props.clickon}> Second Button </button>
</div>
);
};
class App extends React.Component{
constructor(props) {
super(props);
this.handleClick = this.handleClick.bind(this);
}
handleClick(event){
var clickedId = event.target.id;
console.log(clickedId);
alert("It works! You clicked " + clickedId)
}
render(){
return (
<Elem name = 'paul' last='shreeman' clickon={(event)=>this.handleClick(event)} text='PushMe'/>
)
}
}
ReactDOM.render(
<App />, document.getElementById('root'))
それがあなたのために働くなら、これを試してください。
メソッドのパラメーターとしてイベントを渡すこれは一例です:
onChangeHandaler = (event)=>{
var inputName = event.target.name;
var inputValue = event.target.value;
this.setState({[inputName]:[inputValue]})
}