Доступ к PropTypes через основной пакет React устарел
Я использую redux, но когда я запускаю свой код, у меня есть эта ошибка:
Доступ к PropTypes через основной пакет React устарел. Использовать пакет prop-types от npm вместо.
Я устанавливаю
npm я prop-types -S
но я все еще имею ту же ошибку.
./компоненты/действие/article.js
import * as ArticleActionTypes from '../actiontypes/article';
export const AddArticle = (name, description, prix, image) => {
return {
type: ArticleActionTypes.ADD_ARTICLE,
name,
description,
prix,
image
}
}
export const RemoveArticle = index => {
return {
type: ArticleActionTypes.REMOVE_ARTICLE,
index
}
}
./компоненты/actiontypes/article.js
export const ADD_ARTICLE = 'article/ADD_ARTICLE';
export const REMOVE_ARTICLE = 'article/REMOVE_ARTICLE';
export const UPDATE_ARTICLE = 'article/UPDATE_ARTICLE';
./компоненты/редукторы/article.js
import * as ArticleActionTypes from '../actiontypes/article';
const initialState = [
{
name: 'test',
description: 'test',
prix: 'test',
image: 'url'
},
{
name: 'test',
description: 'test',
prix: test,
image: 'url'
}
]
export default function Article (state=initialState, action){
switch(action.type){
case ArticleActionTypes.ADD_ARTICLE :
return [
...state,
{
name: action.name,
description: action.description,
prix: action.prix,
image: action.image
}
];
case ArticleActionTypes.REMOVE_ARTICLE :
return [
...state.slice(0, action.index),
...state.slice(action.index +1)
] ;
default: return state;
}
}
index.js
import React from 'react';
import { render } from 'react-dom';
import {Provider} from 'react-redux';
import {createStore} from 'redux';
import ArticleReducer from './components/reducers/article';
import Scoreboard from './components/containers/Scoreboard';
const store = createStore(
ArticleReducer,
window.__REDUX_DEVTOOLS_EXTENSION__ && window.__REDUX_DEVTOOLS_EXTENSION__()
)
render(<Provider>
<Scoreboard store={store}/>
</Provider>, document.getElementById('root'));
./компоненты/контейнеры/Scorboard.js
import React from 'react';
import {connect} from 'react-redux';
import {bindActionCreactors} from 'redux';
import PropTypes from 'prop-types';
class Scoreboard extends React.Component {
render(){
return (
<div>
Scoreboard
</div>
)
}
}
const mapStateToProps = state => {
{
articles :state
}
}
Scoreboard.propTypes = {
articles: PropTypes.array.isRequired
}
export default connect(mapStateToProps)(Scoreboard);
Ответы
Ответ 1
Как уже упоминалось, если вы проверили свой собственный проект для использования PropTypes
, но вы все еще видите предупреждение - скорее всего, это связано с зависимостями восходящего потока. Один из способов выследить причину этого предупреждения - установить точку останова отладки, где он зарегистрировался, а затем вернуться к вызывающему абоненту. Здесь я сделал быстрый пример записи:
![введите описание изображения здесь]()
(Доступна более качественная версия здесь.)
После того как вы определили библиотеку, о которой идет речь, рассмотрите вопрос о публикации проблемы Github (или еще лучше - PR!), чтобы сообщить авторам о новом предупреждении.
В то же время это только предупреждение в режиме dev, поэтому оно не должно влиять на использование вашего приложения.
Ответ 2
Поскольку релиз React v15.5.0 React.PropTypes устарел и переместился в другую библиотеку. Вы должны использовать npm install prop-types
и использовать PropTypes оттуда.
Код в. /components/containers/Scorboard.js выглядит отлично, у вас, вероятно, есть React.PropTypes
где-то еще в вашем коде.
Другими параметрами являются то, что некоторая зависимость, которую вы используете, по-прежнему использует ее по-старому. Вы можете попытаться обновить свои зависимости, но поскольку это устаревание является совершенно новым, я сомневаюсь, что каждая библиотека уже выпустила обновление.
Подробнее о стирании PropTypes здесь.
UPDATE
Кажется, что redux обновил его зависимости, чтобы использовать React v15.5.0 и избавился от предупреждений об устаревании. Он фиксируется также в версиях v4 и v5.
Соответствующие запросы на pull: # 663 и # 666
Ответ 3
Я решил это предупреждение следующим образом:
Установленные PropTypes
# npm install -S prop-types
Импортировать PropTypes, подобные этому
import PropTypes from 'prop-types';
вместо этого:
import { PropTypes } from 'react';
Ответ 4
Обязательно не используйте React.PropTypes, sample:
MyComponent.propTypes = {
MyString: PropTypes.string.isRequired
}
Ответ 5
![введите описание изображения здесь]()
Устранена эта проблема, просто запуская
npm установки prop-types
Ответ 6
Также обязательно импортируйте React правильно. У меня было это:
import * as React from 'react';
И должно быть:
import React from 'react';
Это все мои предупреждения.