Как правильно проверить Props перед рендером компонента и сделать редирект?
Есть контейнер, в котором прокинуты пропсы через redux и который в рендере выдаёт компонент с этими пропсами.
Проблема в том, что нужно сделать условным вывод компонента, если есть пропсы, то это объект и отрендерить его. Если пропсов нет, то вместо объекта null и редирект через react-router@3 на главную (browserHistory.push('/')).
Проверку и редирект делаю в componentWillMount(). Я это понимаю так, что если мы добрались до этого места и компонент еще не смонтирован, то после команды редиректа не должен произойти рендер, соответственно, не должно быть ошибок о чтении пропсов, что они null. Но, очевидно, я ошибаюсь. Как это правильно делается?
И на засыпку: как писал выше, я использую или заполненный объект {...} или null. PropTypes на данный момент не использую, потому тип не проверяется. Но правильно ли так делает с прицелом на использование PropTypes?
Метод componentWillMount не рекомендован к использованию. Давно вышел react-router 4.
Вы можете использовать конструктор и history.push, либо render и компонент Redirect.
Вместо PropTypes лучше использовать TypeScript или Flow.
sinneren, да, по меркам фронтенда это давно. Не стоит тратить время на устаревшую версию библиотеки. Тем более, что react-router-3 больше не поддерживается.