33 votes

L'accès PropTypes via les principaux Réagir paquet est obsolète

Je suis l'aide de redux, mais lorsque j'exécute mon code, j'ai cette erreur:

L'accès PropTypes via les principaux Réagir paquet est obsolète. L'utilisation de la prop-package types de mnp à la place.

- Je installer

npm je prop-types-S

mais j'ai j'ai toujours la même erreur.

./components/action/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
    }
}

./components/actiontypes/article.js

export const ADD_ARTICLE = 'article/ADD_ARTICLE';
export const REMOVE_ARTICLE = 'article/REMOVE_ARTICLE';
export const UPDATE_ARTICLE = 'article/UPDATE_ARTICLE';

./components/reducers/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'));

./components/containers/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);

62voto

brianvaughn Points 494

Comme d'autres l'ont mentionné, si vous avez vérifié votre propre projet pour l' PropTypes utilise, mais vous êtes toujours voir l'avertissement - il est probable venant de l'amont de la dépendance. Une façon vous pouvez déterminer la cause de cet avertissement, c'est par la fixation d'un debug point d'arrêt où il est connecté, puis de revenir à l'appelant. Voici un exemple rapide de l'enregistrement que j'ai fait:

enter image description here

(Une plus grande qualité version est disponible ici.)

Une fois que vous avez identifié la bibliothèque en question, d'envisager le dépôt Github question (ou mieux encore - un PR!) pour informer les auteurs de la nouvelle mise en garde.

En attendant, ce n'est qu'un dev-mode d'avertissement de sorte qu'il ne devrait pas affecter la production de l'utilisation de votre application.

16voto

Yuval Points 149

Depuis la sortie de Réagir v15.5.0 Réagir.PropTypes est obsolète et a déménagé à une autre bibliothèque. Vous devez utiliser npm install prop-types et l'utilisation PropTypes à partir de là.

Le code lors de l' ./components/containers/Scorboard.js regarde bien, vous avez probablement un React.PropTypes quelque part dans votre code.

Une autre option est que certains de dépendance que vous utilisez est encore en utilisant l'ancienne. Vous pouvez essayer de mettre à jour vos dépendances, mais que cette dépréciation est assez nouveau, je doute que chaque bibliothèque avait déjà publié une mise à jour.

Plus de détails sur la PropTypes autodérision ici.

Mise à JOUR

Il semble que redux a mis à jour ses dépendances à usage de Réagir v15.5.0 et se débarrasser de la dépréciation des avertissements. Il est fixé en v4 et v5 ainsi.

Pertinentes pull requests: #663 et #666

8voto

enam Points 46

J'ai résolu ce problème d'avertissement de cette façon:

Installé PropTypes

# npm install -S prop-types

Importation PropTypes comme ceci

import PropTypes from 'prop-types';

au lieu de faire ceci:

import { PropTypes } from 'react';

2voto

i am gpbaculio Points 803

Assurez-vous de ne pas utiliser de Réagir.PropTypes, exemple:

MyComponent.propTypes = {
    MyString: PropTypes.string.isRequired
}

2voto

Gerard Brull Points 492

Assurez-vous également d'importer Réagir correctement. J'ai eu ceci:

import * as React from 'react';

Et devrait être:

import React from 'react';

Ce corrigé tous mes avertissements.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X