ユーザーが評価を作成できるようにする(他のユーザーが完了できるようにする)アプリケーションを作成しています。今、私は、ユーザーが関連するデータがあらかじめ入力されたフォームをロードする「編集」ページを作成していますが、これらの値を変更することはできます。React:状態の設定と小文字からのデフォルト入力
しかし、私は2つの問題(私は関連していると思われる)に問題があります。 最初に、入力フィールドにはコンポーネントの状態から派生したデフォルト値が表示されません。
2番目:入力フィールドを直接小道具から設定した場合、値を変更できなくなりました。
コンポーネントには、block_data
と呼ばれる小道具が渡されます。これは、文字列のキーと値のペアを含む辞書です。
私はしかし、これは動作しませんので、
constructor(props) {
super(props);
this.state = {
block: this.props.block_data,
question_list: [],
question_options: ['BO', 'SC', 'SR', 'NO'],
block_list: [],
};
(..)
}
のような状態に負荷にそれを変換しようとしています。 Chromeの反応拡張機能をチェックインすると、状態は設定されません。
入力フィールドは、以下に含まれる例と非常に似ています。ここで私は小道具からその価値を設定しました。この場合、正しい初期データが表示されます。しかし、私はそれを編集することができません。
<input
onChange={e => this.changeIsANaturalPartOfLife(e)}
value={this.props.block_data.title}
name="title"
/>
以下は「変更時」機能です。クロム反応ツールをチェックすると、入力を開始したときに状態の最初の文字だけが更新されていることがわかります。入力フィールドには変更が表示されません。
changeIsANaturalPartOfLife(e, optional) {
const target = e.target;
const name = target.name;
const value = target.value;
console.log(value);
this.setState({ block: {[name]: value }});
}
私は実際に何をすべきかについて迷っています。私がここでやろうとしていることは十分に単純なようですが、私はこの欠陥のある段階を超えて進めることができません。誰かが私が間違っているアイデアを持っていますか?
サーバーから入力データに表示されているデータを取得していますか? –
入力値を変更できるようにするには、propsの代わりに状態を参照する必要があります。 'value = {this.state.block.title} ' –
@MayankShukla、yes - データはDjangoRestAPIからロードされます。 – Jasper