2017-04-09 6 views
31
veraltet

Ich verwende Redux aber wenn ich meinen Code ausführen Ich habe diesen Fehler:Zugriff PropTypes über das Haupt Reagieren Paket

Accessing PropTypes via the main React package is deprecated. Use the prop-types package from npm instead.

ich installieren

npm i prop-types -S

aber II haben immer noch die gleichen Error.

./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); 
+0

dieses versuchen, mit Upgrade-Versionen zu beheben: https://www.npmjs.com/package/proptypes, installieren Sie sie, indem Sie 'npm installieren proptypes', ich denke, ur mit ein anderes npm-Modul. –

+0

überprüfen Sie diesen Blog auch: https: //facebook.github.io/react/blog/2017/04/07/react-v15.5.0.html –

+0

@MayankShukla Wie ich hier https://facebook.github.io sehen kann /react/blog/2017/04/07/react-v15.5.0.html das Paket OP verwendet ist korrekt –

Antwort

16

Seit der Veröffentlichung von React v15.5.0 React.PropTypes ist veraltet und wird in einer anderen Bibliothek bewegt. Sie sollten npm install prop-types verwenden und PropTypes von dort verwenden.

Der Code unter ./components/containers/Scorboard.js sieht tadellos aus, Sie haben wahrscheinlich eine React.PropTypes woanders in Ihrem Code.

Eine andere Option ist, dass einige Abhängigkeiten, die Sie verwenden, es immer noch auf die alte Weise verwenden. Sie können versuchen, Ihre Abhängigkeiten zu aktualisieren, aber da diese Abwertung ziemlich neu ist, bezweifle ich, dass jede Bibliothek bereits ein Update veröffentlicht hat.

Weitere Informationen über die PropTypes-Einstellung here.

UPDATE

Es scheint wie redux es Abhängigkeiten Reagieren verwenden aktualisiert v15.5.0, habe der deprecation Warnungen loszuwerden. Es ist auch in v4 und v5 behoben.

Relevante Pull-Anfragen: #663 und #666

+2

Wahrscheinlich verursacht durch Abhängigkeiten. Ich glaube, dass "react-redux" auch 'PropTypes' verwendet. – Sulthan

+4

Ja, dies wird höchstwahrscheinlich durch Abhängigkeiten verursacht. Geben Sie ihnen ein paar Wochen Zeit, um diese Warnung zu aktualisieren und zu ignorieren. –

+1

Bekam die gleiche Fehlermeldung mit React Router v4 ... – Vinay

54

Wie andere haben mentioned-, wenn Sie Ihr eigenes Projekt für PropTypes Anwendungen geprüft haben, aber Sie sehen immer noch die Warnen es wahrscheinlich von einem Upstream-Abhängigkeit kommen. Eine Möglichkeit, die Ursache dieser Warnung aufzuspüren, besteht darin, einen Debug-Breakpoint so einzurichten, dass er protokolliert wird, und dann zurück zum Aufrufer zu gehen. Hier ist ein kurzes Beispiel Aufnahme, die ich gemacht: (. Eine hochwertigere Version verfügbar here)

enter image description here

Sobald Sie die Bibliothek in Frage identifiziert haben, sollten Sie die Einreichung einer Github Ausgabe (oder besser noch ein PR!), um die Autoren über die neue Warnung zu informieren.

In der Zwischenzeit ist dies nur ein Warnhinweis für den Modus "dev", sodass die Nutzung Ihrer Anwendung in der Produktion nicht beeinträchtigt wird.

+1

Sehr schön. Aber ich kann es herausfinden, wenn ich webpack verwende? Die Quellen stammen in diesem Fall von "bundle.js", und ich kann das problematische Modul nicht finden. – Chen

+0

Dann müssen Sie den Quellcode an der Stelle, die Ihnen angezeigt wird, herumstöbern, indem Sie im Call-Stack nach oben gehen. In der Regel gibt es einen Hinweis (einen Namen für eine öffentliche Methode oder eine hart codierte Zeichenfolge), der Sie bei der Eingrenzung unterstützen kann. – brianvaughn

+0

FWIW, In der Stack-Trace der ersten Warnung können Sie auch Broadcast in Zeile 104 als Problem sehen – Joe

2

sicher sein, nicht React.PropTypes zu verwenden, Beispiel:

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

Was ist das Problem hier?Angenommen, Sie haben "PropTypes" aus dem 'prop-types'-Paket und nicht aus React importiert ([Code wird ausdrücklich als gut bezeichnet]) (https://github.com/facebook/prop-types#difference-from) -reactproptypes-dont-call-validator-Funktionen). –

+0

Danke! Ich habe immer noch eine Warnung nach der Verwendung des npm 'prop-types' Pakets, es stellt sich heraus, dass im Code jemand' React.PropTypes' verwendet hat. Ersetzen durch 'PropTypes' (importiert aus dem npm-Paket) behebt das Problem. – sonlexqt

8

Ich löste diese Warnung auf diese Weise:

installiert PropTypes

# npm install -S prop-types

Import PropTypes wie diese

import PropTypes from 'prop-types';

statt, dies zu tun:

import { PropTypes } from 'react';

0

enter image description here

dieses Problem gelöst, indem einfach laufen npm Prop-Typen

0

Auch sicher sein, installieren Sie richtig reagieren zu importieren. Ich hatte dies:

import * as React from 'react'; 

Und sollte sein:

import React from 'react'; 

Diese feste alle meine Warnungen.

Verwandte Themen