Visual: Form I am using on the left, outputs on the rightは、配列要素のすべてをバック繰り返すチェックボックスをマッピングし、代わりに私がチェックボックスの配列マップを使用しようとしている私は
をチェックしましただけのものはあるものの機能を紹介するために反応するが、ときリアクト私は私のフォームを提出した後、私のフロントエンドのWebページのテーブルに表示されるすべての配列要素を、私がチェックしたものの代わりにデータベースに表示します。それはすべてMongoDBデータベースに戻って報告されています。うまく動作しています(単純なString入力に送信したものを変更して、それがうまく表示されたことを確認しました)ので、マッピングが問題です。ありがとう!
コンストラクタ:
constructor(props) {
super(props);
this.state = {
name: '',
price: '',
location: ['Back Bay', 'Downtown Crossing'],
description: '',
features: [
'Pet-Free', 'Climate-Controlled', 'Locked Area', 'Private Entrance', 'Smoke Detectors', 'Smoke Free'
],
};
this.onInputChange = this.onInputChange.bind(this);
this.addListingService = new ListingService();
this.handleSubmit = this.handleSubmit.bind(this);
}
そして、ここが私のマッピングです:
<div>What cool features does this storage space have?</div>
{
this.state.features.map((features) => {
return <CheckBox key={features} title={features} name="features" />
})
}
編集:
私もそれはそれをトリガーするかどうかを確認するためにonInputChange()関数を使用しようとしましたチェックしたチェックボックスのオプションだけがフロントエンドのページとデータベースに表示されますが、それは役に立たないようです。私は使用しているフォームと出力を示す写真を添付しました。
onInputChange(event) {
const target = event.target;
const value = target.type === 'checkbox' ? target.checked : target.value;
const name = target.name;
this.setState({
[name]: value,
});
}
編集2:私は以下の提案として、今のキーマッピングをしようとしているが、ObjectKeys機能付きエラーを取得しています
ここでは、その関数です。私は受信エラーが「TypeError例外。:Object.assign(...)フィルタは関数ではありません」と言う
Object.keys(this.state.features).map(key =>({...this.state.features[key],title:key}
.filter(features=>features.checked)
.map(features => <CheckBox key={features} title={features} onChange = {this.onInputChange} />)))
私はそれを取得できません。チェックされていないものをレンダリングしたくないと言っていますか?もしそうなら、その条件付き論理はどこですか?あなたのマッピングは、条件なしで配列ごとの要素をレンダリングするだけです。 – Jayce444
私がチェックしたものだけを報告したいのであれば、彼らは私のデータベースに送られ、私は自分のページにそれらをリストすることができます。 – user9148237
以前私はonChange {this.onInputChange}をしようとしましたが、それは役に立たなかったようです。この関数は次のとおりです。 onInputChange(イベント){ const target = event.target; const value = target.type === 'チェックボックス'? target.checked:target.value; const name = target.name; this.setState({ [name]:value、 }); } – user9148237