私はいくつかのユーザー(javascript)入力を評価することを含む反応を伴うweb-appコーディングゲームを作りたいと思います。ボタンを押したときの入力文字列をeval入力して反応させます
constructor(props) {
super(props);
this.state = {
code: ''
};
}
handleChange(key) {
return event => this.setState({ [key]: event.target.value });
}
funScript() {
eval(this.state.code);
}
anotherScript() {
console.log("Will this work?");
}
render() {
return (
<div>
<input
type={"text"}
value={this.state.code}
onChange={this.handleChange('code')}
/>
<button onClick={this.funScript()} >run</button>
</div>
);
}
私はテキスト入力がthis.anotherScript()内のユーザーの種類(ユーザーがボタンを押した上でJavaScriptを評価することができるだろうと期待していた。「?ウィルこの作品」。とコンソールログ残念ながら、それはうまくいかず、Reactに固有の問題だと思われます。入力ボックスが入力されるとすぐに、ボタンを押さなくても文字列を評価しようとします。例を参照してください:https://codesandbox.io/s/54rkp584ll
誰でも最初の文字入力でjavascriptを破らない適切なReactソリューションを持っています(機能を評価します)?
うーん..私はちょうどfunScript境界せずに作品内)this.funScriptを(実行機能を渡しました。 https://codesandbox.io/s/54rkp584ll括弧を削除 '<ボタンのonClick = {()=> {this.funScript()}}>の実行' は動作しませんでしたが、私はよ私がthisにバインドしなかったので推測する.funScript –
ええ、関数を呼び出す矢印関数を作成するのは、基本的に関数をバインドすることです。あなたが矢印関数と 'this'に慣れていないなら、あなたはそれを調べるべきです。それは非常に明白ではありませんが、理解するのに非常に役立ちます/重要です。 –