reactjs - React güncellemesinden sonra useReducer hook'u 3 argüman gerektiriyor


React ve @types/react sürümünü 16.9.0 olarak güncellerken bir sorunla karşılaştım (daha fazla yükseltirsem de bu sorun devam ediyor). Şunu söylüyor: 3 argüman bekleniyor, ama 2 verildi.

Kod :

const [state, dispatch] = React.useReducer<State<D>, Action<D>>(reducer, {
    loading: false,
    data: undefined,
    error: undefined
  });

Üçüncü argümanın ne olduğunu bulmaya çalıştım, ama sadece isteğe bağlı olduğunu gördüm. Belki birinin aynı sorunu olmuştur?

Cevap #1

Bu, State<D>, Action<D> türü değişkenler olmadan tanımlanmalıdır:

const [state, dispatch] = React.useReducer(reducer, {
    loading: false,
    data: undefined,
    error: undefined
});

Cevap #2

Hâlâ tür değişkenlerini kullanabilirsiniz.

React 3 argüman bekliyor çünkü tip tanımında sadece reducer fonksiyon tanımını vermen gerekiyordu.

interface stateInterface {
  loading: boolean,
  data: undefined | string,
  error: undefined | string,
}
function reducer(state: stateInterface, action: string): stateInterface {
  return // your reducer defintion here
}
const [state, dispatch] = React.useReducer<(state: stateInterface, action: string) => stateInterface>(reducer, {
    loading: false,
    data: undefined,
    error: undefined
});

İlgili makaleler