Kjør npm install
og deretter npm start
.
Denne app-en har følgende state-tre:
{
preview: true/false // Hvorvidt filmen skal forhåndsvises
movie: {
title: '', // Tittel på filmen
synopsis: '', // Sammendrag av filmen
starringCharacters: [ // Karakterer som er med i filmen
{
url: '', // Karakterens URL i SWAPI
name: '', // Karakterens navn
imageUrl: '' // Karakterens bilde-URL
}
]
},
characterPickList: [ // Hele karakter-registeret (ferdig populert)
{} // Se karakter-objekt over
]
}
Denne app-en har følgende actions:
TITLE_CHANGED
- Når tittelen endrer seg. Payload er tittel.SYNOPSIS_CHANGED
- Når sammendraget endrer seg. Payload er sammendraget.CHARACTER_ADDED
- Når karakter er lagt til filmen. Payload er karakter-objektet.CHARACTER_REMOVED
- Når karakter er fjernet fra filmen. Payload er karakter-objektet.PREVIEW_ACTIVATED
- Når forhåndsvisning er aktivert.PREVIEW_DEACTIVATED
- Når forhåndsvisning er deaktivert.
I denne oppgaven skal vi bruke React bindings for å gi React-komponentene våre data fra Redux sin store.
React-komponentene og reducerne er allerede implementert. Din oppgave er å implementere de ulike containerne. Disse finner du i containers
-mappen.
For å gi et lite referansegrunnlag har vi implementert AppContainer
og PreviewButtonContainer
. Se på disse som et eksempel på en måte å implementere de andre containerne på.
Som vi vet, er det to typer props vi lager: state-props og dispatch-props. For å vite hvor du skal hente state-data, se state-treet over. For å vite hvilke action-typer du skal trigge, se listen over og se gjerne på de ferdig implementerte reducerne.
Containerne du skal implementere er (i denne rekkefølgen):
MoviePreviewContainer
- Den underliggende komponenten skal forhåndsvise Star Wars-filmen vår og trenger derfor props-enetitle
,synopsis
ogstarringCharacters
.CharacterPickListContainer
- Den underliggende komponenten skal vise hele det tilgjengelige karakterregisteret og trenger derfor prop-encharacterPickList
.CharacterPickListItemContainer
- Den underliggende komponenten er et punkt i plukklisten. Når du klikker på listepunktet, skal karakteren bli lagt til filmen, og derfor trenger komponenten prop-enonCharacterClicked
(action).MovieFormContainer
- Den underliggende komponenten skal la deg endre tittel, synopsis og hvilke karakterer som skal være med i filmen. Det trengs derfor props-enetitle
,synopsis
ogstarringCharacters
. Den trenger også props-eneonTitleChanged
ogonSynopsisChanged
for å dispatche actions som oppdaterer hhv.title
ogsynopsis
.StarringCharacterListItemContainer
- Den underliggende komponenten er et punkt i listen over karakterer som er valgt. Når du klikker på listepunktet, skal karakteren bli fjernet fra filmen, og derfor trenger komponenten prop-enonCharacterClicked
.
Lykke til!