問題タブ [use-reducer]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
2 に答える
4595 参照

javascript - 更新された状態の代わりに promise を返す useReducer

私の減速機:

私のApp.js:

App.js では、2 番目の useEffect が呼び出された後、状態が更新され、ユーザーが promise を返します。promise には複数のプロパティがあり、そのうちの 1 つに、返されるはずだった正しい状態があります。状態を返すべきではありませんか?私は何か間違ったことをしていますか?

手短に:

1) アプリ起動

2) useEffect が初めて呼び出され、正しい初期状態になっている

3) 状態を更新する LOAD アクションを呼び出します

4) useEffect が 2 回目に呼び出されます。今回は promise を返しますが、ストアの更新された状態のみを返す必要があるのではないでしょうか?

コンソール

0 投票する
1 に答える
98 参照

reactjs - アプリが 2 回レンダリングされないようにするにはどうすればよいですか? (reactjs)

totalAmountアプリでの表示に問題があります。2 回のレンダリングのため、間違った値が表示されます。そのために useMemo フックを使用しようとしています。

これはどのように見えるかです(cssを気にしないでください:D)

ここに画像の説明を入力

したがって、次のように数えます。

7.99 * 2 + 4.99 = 20.97

最後に追加されたアイテム -44.99カウントされていませんtotalAmount

22回レンダリングするため、最初のアイテムを乗算します。

そして、ここに私のコード サンドボックスがあります: https://codesandbox.io/s/objective-kare-805kc?file=/src/components/App.tsx

0 投票する
1 に答える
2282 参照

javascript - useReducerを使用して反応制御入力を実装する方法は?

useReducer私の目標は、フックを使用して React 制御の入力を実装することです。

レデューサー内では、現在の値とキャレット位置を取得するためにevent.target.valueandが必要です。そのため、アクションのとしてevent.target.selectionStartを送信することを考えました。eventpayloadON_CHANGE

これは私がしようとしているものです:

https://codesandbox.io/s/optimistic-edison-xypvn

入力された最初の文字には機能しますが、2番目に壊れます。

これはエラーです:

警告: この合成イベントは、パフォーマンス上の理由から再利用されます。targetこれが表示されている場合は、リリースされた/無効化された合成イベントでプロパティにアクセスしています。これは null に設定されます。元の合成イベントを維持する必要がある場合は、event.persist() を使用します。詳細については、を参照react-event-poolingしてください。

私は何をすべきか?どこに電話する必要がありますかevent.persist()。で行う必要がありますか、またはハンドラーreducer内でパラメーターとして送信する前に行う必要があります。onChange()

eventまたは、オブジェクト全体を送信するのではなく、これらのプロパティのみを送信する方がよいでしょうか?

お気に入り:

0 投票する
2 に答える
607 参照

javascript - useReducer( reducer, getInitialState() ) で使用される getInitialState() 関数をレンダリングごとに実行しないようにするにはどうすればよいですか?

以下のスニペットを参照してください。

これを行うことにより:

レンダリングごとにgetInitialState2()used inを実行することを避けます。useState

useReducerしかし、それはフックでは機能しないようです。

質問

すべてのレンダーでフックのinitialStateパラメーターで使用される関数の実行を回避する方法はありますか?useReducer

0 投票する
1 に答える
454 参照

javascript - React の useReducer フックを使用して 2 つの異なるハンドラーから状態を更新する方法

{ useReducer } を使用してフォームの状態を管理しています。しかし、私は2つの別々のハンドラーを持っています

  1. handleChange() = 入力の変更(これは期待どおりに機能します)

  1. UploadFile() = 画像のアップロード用(これは画像/状態を更新しません)

UploadFile() で画像の状態を更新できませんでした。何が間違っているのかわかりません。以下は完全なコード全体です。