最終状態オブジェクトをサーバーに送信する前にローカル状態の変更をいくつか作成しようとしています。私はまず、reduxストアに提出されるtargetUserにユーザーを設定し、新しい役割を持つ返された更新されたユーザーはローカル状態で保持されます。ユーザーがターゲットユーザーになると、GradeSelectドロップダウンが表示され、ターゲットユーザーをグレーディングすることができます。グレードが選択されると、GradeSelectコンポーネントの送信ボタンでデータIDとして取得し、ローカル状態オブジェクトに追加しようとしています。そこから新しいユーザー情報(ターゲットユーザーとグレード)をサーバーに送信できます。onSelectイベントでローカル変数を設定する
私は、onSelect関数を介してローカル変数( 'let'で初期化)を設定するのは簡単だと思っていました。 は次のようになります。
handleGradeChange(e) {
const grade = e.target.dataset.id
console.log('NEW GRADE', grade)
}
GradeSelectは、オプションとして、これらを使用してこの周囲のコードによって包含される::newGradeが設定されていない理由を私は把握するまで
const GradeSelect = (props) => {
const { grades, userGrade, handleGradeChange } = props;
let newGrade = ''
const setGrade = (e) => newGrade = e.target.value;
return (
<div>
<select defaultValue={userGrade ? userGrade : "select"} onChange=
{setGrade}>
<option value="select" disabled>Select Grade</option>
{
grades.map(grade =>
<option value={grade} key={grade}>{grade}</option>
)
}
</select>
<Button
bsSize="xsmall"
bsStyle="success"
disabled={!newGrade.length}
id={newGrade}
onClick={handleGradeChange}>
submit
</Button>
</div>
);
};
export default GradeSelect;
handleGradeChangeは、単にこれですオプションをしましょう= ["user"、 "targetUser"];私はそれがこの "の結合であるかもしれないが、「この」が大きなコンポーネントの一部であるGradeSelectに定義されていない...私は私の問題は、おそらくそこにあると仮定し、それはあると思った私の研究では
<td>
<select
onChange={handleRoleChange}
data-id={JSON.stringify(user)}
value={role}
>
<option value={role}>{role}</option>
{
role === options[0] ?
<option value={options[1]}>{options[1]}</option> :
<option value={options[0]}>{options[0]}</option>
}
</select>
{
role === options[1] ?
<GradeSelect
grades={grades}
handleGradeChange={handleGradeChange}
userGrade={userGrade}
/> : null
}
</td>
私を超えて
ここでは、私が問題を示すcodePen(https://codepen.io/anon/pen/MrWXMo?editors=1111)を示します。インポートされたすべての小道具をローカルに作成しなければならなかった。私はこれが答えに影響しないことを願っています。しかし、問題はcodePenで同じです。
これはstackOverflowに関する私の最初の質問ですので、私が残したことを私に許してください(そして気をつけてください)。お時間を事前に
おかげ
問題が何かを理解できませんでしたが、Reactでグローバル変数を使用するのは悪い習慣です。状態を使用してnewGradeを保存し、ドロップダウン値を制御します。 – tugce
@tugceはい私はこれをクラスコンポーネントの代わりに単純なコンポーネントにしていました。私が達成しようとしているものが不可能な場合は、それをクラスコンポーネントにし、ローカル状態を使用してグレードをコンテナコンポーネントに転送します。 –