#javascript #reactjs #redux #react-redux
#javascript #reactjs #переопределение #реагировать-redux
Вопрос:
Я изучал React в течение последних нескольких недель.
Сначала я разработал простой чат с помощью plain React, а теперь я начал интегрировать Redux в свое приложение.
Я добавил простое действие, соответствующий редуктор (вместе с корневым редуктором) и хранилище. Затем я дошел до той части, где мне нужно использовать Provider из библиотеки react-redux:
import React from 'react';
import ReactDOM from 'react-dom';
import { Provider } from 'react-redux';
import { Router, browserHistory } from 'react-router';
import ConfigureStore from './Store/ConfigureStore';
import Routes from './Routes';
const store = ConfigureStore();
ReactDOM.render(
<Provider store={store}>
<Router history={browserHistory}
routes={Routes} />,
</Provider>,
document.getElementById('root')
);
Приложение компилируется нормально, но я получаю следующие ошибки в консоли:
Предупреждение: Сбойный тип prop: Недопустимый prop
children
типа,array
предоставленногоProvider
, ожидаемый один ReactElement. в провайдере
и
Неперехваченное инвариантное нарушение: реагирует.Дочерние элементы. ожидается получение только одного дочернего элемента React.
Я использую приложение React Create в качестве начального набора.
Полный код можно найти здесь.
Комментарии:
1. У вас есть
,
after<Router history={browserHistory} routes={Routes} />
. Попробуйте удалить это?2. @iamnat Я ломал голову около 2 часов, читая почти все, что связано с Google… Спасибо. Пожалуйста, дайте ответ, и я выберу его. Не могу поверить, что я пропустил такую мелочь.
Ответ №1:
У тебя есть ,
после <Router history={browserHistory} routes={Routes} />
Попробуйте удалить его?
Ответ №2:
Та же ошибка:
Предупреждение: Сбойный тип prop: Недопустимый prop
children
типа,array
предоставленногоProvider
, ожидаемый один ReactElement.Неперехваченная ошибка: реагирует.Дочерние элементы. ожидается получение только одного дочернего элемента React.
Мне пришло в голову написать Provider в этом формате:
<Provider store={store}> <App4Connected /> </Provider>
вместо этого корректно работает следующее:
<Provider store={store}>
<App4Connected />
</Provider>
Комментарии:
1. jsx чувствителен к пробелам. Я полагаю, у
Provider
было два дочерних элемента text.
Ответ №3:
Для меня запись в этом формате вызывала ошибку:
ReactDOM.render(<Provider store={store}> <App /> </Provider>, document.getElementById('root'));
Но это работает нормально:
ReactDOM.render(
<Provider store={store}>
<App />
</Provider>,
document.getElementById('root'));