私はReactJSを学んでいます。入力テキストと「確認」ボタンを表示するWebアプリケーションを作成し、押されると、新しい入力を削除する「戻る」ボタンが付いた2番目の入力テキストが表示されます。 2番目が表示されているときは、最初の入力と最初のボタンが無効になります。ReactJSのボタンを正しく無効にするには?
ただし、私の現在のスクリプトは受け入れられません。私は関数をFormRender関数に渡し、FormRenderオブジェクト自体に "disabled"( "予期しないトークン"を発見したと主張する)というプロパティを渡すことに問題があります。
もっと良いアプローチはありますか?
function FormRender (props) {
return (
<div>
<input type = "text" placeholder = {this.props.holder} {this.props.disable} />
<button onClick = {this.props.Click()} {this.props.disable} > {this.state.value} </button>
</div>
);
};
var R = React.createClass ({
getInitialState: function() {
return { names: [], disable: false }
},
update: function() {
return this.state.disable ? "disabled" : "";
},
componentDidMount: function() {
var a = this.state.names;
a.push (<FormRender holder = 'Name' value = 'Confirm' Click = {this.In}, disable: {this.update} />);
this.setState ({ names: a });
this.forceUpdate();
},
In: function() {
var a = this.state.names;
this.setState ({ disable: true });
a.push (<FormRender holder = 'Surname ' value = 'Back' Click = {this.Out} disable: "" />);
this.setState ({ names: a });
this.forceUpdate();
},
Out: function() {
var a = this.state.names;
this.setState ({ disable: false });
a.splice(a.length-1,1);
this.setState ({ names: a });
this.forceUpdate();
},
render: function() {
return (
<div>
{this.state.names}
</div>
);
}
});
'disabled = {true/false}'を使うことができます。文字列変換の必要はありません。 [例](http://stackoverflow.com/a/41488965/6941627)。 –
@Rocコードに間違いがありません。 1.機能コンポーネントに状態がありません: '{this.state.value}'は動作しません 2. FormRenderでは、最初のパラメータでpropsにアクセスできるので、 'this.props.disable 'but 'props.disable' 3.' onClick'のようなイベントハンドラを割り当てるときには、function: 'onClick = {this.props.Click}'(大括弧なし)を割り当ててください。 4.小道具を定義するとき、 : 'を代入演算子として使用します。ほとんどの場所では「=」を使用しますが、「:」を使用する場所はほとんどありません。あなたはそれを変更する必要があります。 おそらく 'クリック= {this.In.bind(this)} 'を使用してください。 – Grajek
"予期しないトークン "エラーを忘れてしまいました。 FormRenderで 'disbale = {this.props.disable}'を使用してください。 – Grajek