Slide 60
Slide 60 text
/**
* WordPress dependencies
*/
import { registerStore } from '@wordpress/data';
const defaultState = {
talks: {},
};
const actions = {
addTalk( talkName, talkDescription ) {
return {
type: 'ADD_TALK',
talkName,
talkDescription,
};
},
};
const reducer = ( state = defaultState, action ) => {
switch ( action.type ) {
case 'ADD_TALK':
return {
...state,
talks: {
...state.talks,
[ action.talkName ]: action.talkDescription,
},
};
}
return state;
};
const selectors = {
getTalks( state ) {
const { talks } = state;
return talks;
},
getTalk( state, talkName ) {
const { talks } = state;
return talks[ talkName ] || null;
},
};
registerStore(
'wordcamp/seattle',
{
actions,
reducer,
selectors,
},
);