Подтвердить что ты не робот

Доступ к 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);
4b9b3361

Ответ 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';

Это все мои предупреждения.