Я сейчас пересматриваю свое понимание редукса и реагирую. Компоненты React работают, и у меня есть настройка базы данных knex вместе с ней. У меня есть редуктор, используя следующий синтаксис.
import { FETCH_POSTS, NEW_POST } from '../actions/types';
const initialState = {
items: [],
item: {}
}
export default function(state = initialState, action) {
switch (action.type) {
case FETCH_POSTS:
return {
...state,
items: action.payload
};
case NEW_POST:
return {
...state,
item: action.payload
};
default:
return state;
}
}
Вот ошибка, которую я получаю. Кажется, ему не нравится оператор распространения.
bundle.js:445 Uncaught Error: Module build failed (from ./node_modules/babel-loader/lib/index.js):
SyntaxError: C:/workspace/study-related-projects/apistudy7112018/1.0/client/reducers/postReducer.js: Unexpected token (18:8)
Ему не нравится текущий синтаксис, который я использую, который использовался в этом видеоуроке от Traversy Media здесь . Преподаватель реализует промежуточное ПО иначе, чем я, но не думал, что это будет проблемой. Итак, просто, я решил нажать на массив элементов, как в редукторе:
import { FETCH_POSTS, NEW_POST } from '../actions/types';
const initialState = {
items: [],
item: {}
}
export default function(state = initialState, action) {
switch (action.type) {
case FETCH_POSTS:
return state.items.push(action.payload)
default:
return state;
}
}
вместо возвращаемого объекта с оператором распространения.
, а затем вызовите dispatch в функции componentWillMount () в реакции.
Что получилось хорошо, однако теперь стало сложнее отобразить массив для распечатки данных в компоненте.
Если я веду консольный журнал this.props.payload.posts, я получаю элементы, но я не уверен, что смогу получить к нему доступ, потому что следующий массив после записей не имеет имени, просто номер 0. Я попробовал this.props.payload. posts [0], но это не сработало. Это вызывает у меня проблемы с отображением данных с помощью функции массива карты.
Обычно, если все прошло успешно, я могу использовать функцию mapToProps, тогда:
this.props.items.posts.map(post) => {
return post.name
})
Но я столкнулся с этими двумя решениями. Эта проблема возникла из-за того, что я пытался реализовать другой способ использования избыточности, в отличие от того, к чему я привык раньше. Это все для моей учебы и тренировок.
Может ли кто-нибудь помочь мне понять эти две проблемы? Во-первых, javascript не нравится синтаксис оператора распространения, который я использую, и выкладывает эту ошибку. Во-вторых, попытка получить необработанные данные через массив элементов.
Если бы кто-нибудь мог мне помочь, я был бы очень благодарен Спасибо.
Редактировать: Я могу немного сделать git-репо, чтобы все могли видеть код, над которым я работаю.