Załóżmy, że mam akcję, która zostanie wywołana podczas ładowania strony, np. Powiedz, w pliku index.js.jaki jest najlepszy sposób radzenia sobie z nieokreślonymi rekwizytami w pliku react.js?
przykład
store.dispatch(loadData());
w moim reduktora zainicjować stan się do obiektu. Coś takiego
function myReducer(state = {}, action)
teraz mam trochę inteligentny komponent, który subskrybuje do mojego stanu, a następnie przekazuje je do innego składnika do wyświetlania danych. Inną ważną informacją dla tego scenariusza jest fakt, że pobieranie danych odbywa się asynchronicznie. Załóżmy również, że kluczem tego obiektu jest jakaś tablica. Więc składnik markup miałby coś takiego
{this.props.object.key.map(k => do something)}
Teraz ponieważ klucz jest niezdefiniowany nie mogę nazwać mapa na nim i wysadzić. Sposób, w jaki sobie z tym poradzę, polega na użyciu prostej kontroli. Jeśli klucz jest zdefiniowany, uruchom .map, w przeciwnym razie zwróć wartość null. Następnie, zanim moje dane zostaną odzyskane z serwera, renderowanie zostanie ponownie wywołane ze względu na zmianę stanu, w którym subskrybował ten składnik. W tym momencie definiowany jest klucz i można wywołać mapę.
Innym podejściem jest określenie, jak będzie wyglądał twój stan w reduktorze. Innymi słowy, jeśli wiem, że mój stan będzie obiektem z właściwością tablicy, mógłbym zrobić coś takiego.
const initialState = {
key:[]
}
function myReducer(state = initialState, action)
Wykonanie tej czynności przyniesie korzyści, ponieważ teraz nie będę potrzebował mojej kontroli, ponieważ klucz nigdy nie jest niezdefiniowany.
Moje pytania są; czy któreś z tych podejść jest lepsze od innych? A może jest jeszcze inny sposób, aby sobie z tym poradzić?
Używam drugiego podejścia: inicjowanie z pustą tablicą. – vijayst