2017-04-08 14 views
30

Najpóźniej reagować 15.5.1 pakietu w przypadku korzystania babel reagować obecny rozwiązać JSX plik, pojawia się następujące ostrzeżenia:Wyłącz React.createClass i PropTypes nieaktualne ostrzeżenia w babel reagować obecny

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

warning.js:36 Warning: A Component: React.createClass is deprecated and will be removed in version 16. Use plain JavaScript classes instead. If you're not yet ready to migrate, create-react-class is available on npm as a drop-in replacement. 

mojego kodu jest następujący:

import React from 'react' 
import ReactDOM from 'react-dom'; 

class Counter extends React.Component { 
    constructor(props) { 
    super(props); 
    this.state = { 
     count: 1 
    } 
    } 
    componentDidMount() { 
    setInterval(()=> { 
     this.setState((prevState, props) => ({ 
     count: prevState.count + 1 
     })) 
    }, 1000) 
    } 
    render(){ 
    return (
     <h1>{this.state.count}</h1> 
    ) 
    } 
} 

const root = document.createElement('div'); 
root.id = 'app'; 
document.body.appendChild(root); 

ReactDOM.render(
    <Counter />, 
    document.querySelector('#app') 
); 

nie używam React.createClass i PropTypes w moim kodzie wydaje babel przekształcić mój kod do React.createClass i PropTypes, Jak to naprawić?

+0

Czy na pewno pochodzi on z tego kodu? babeljs.io nie wydaje się tak myśleć; [to sedno pokazuje twoje źródło i wynik babeljsa] (https://gist.github.com/davelnewton/495104605f24c588624f5b169075c091). Sprawdź to na https://babeljs.io/repl. Jakiej wersji Babel używasz? –

+1

Obecnie mam ten sam problem z nowo zainstalowanymi pakietami npm. Sądzę, że może to być wynikiem pewnych przełomowych zmian? –

+0

byłoby miło, gdyby ostrzeżenia o wycofaniu były żółte, a nie czerwone w konsoli programisty. –

Odpowiedz

-3

Nie należy przedłużać reakcji. Składnik. Trzeba importować składnik z zareagować i przedłużyć to pokazano poniżej:

import React, {Component} from 'react'; 

    class Counter extends Component{ 
    //your code here 
    render(){ 

    return (
     <h1>{this.state.count}</h1> 
    ); 
    } 
} 

można przeczytać o różnicach i klas ES6 here

+2

Czy możesz wyjaśnić nieco więcej na temat 'class MyComponent extends React.Component' vs' class MyComponent extends Component'? @N. Solomon –

+0

@SiddharthTrivedi - możesz użyć komponentu, jeśli importujesz go z reakcją. Ex: 'import React, {Component} from 'react';' – Steph

+2

po prostu wyodrębniasz komponent z reakcji, ponieważ React.Component również jest poprawny. –

3

React.createClass i React.PropTypes została zaniechana w v15.5.

Niektóre zależności/zależności muszą używać React.createClass i React.PropTypes z React:^15.4 (lub dowolnej innej wersji), która jest bardzo zgodna z twoją wersją reagowania. W ten sposób otrzymujesz ostrzeżenie o istnieniu kodu.

Zapoznaj this link do 15,5 Zmiany

https://facebook.github.io/react/blog/2017/04/07/react-v15.5.0.html

0

To nie jest odpowiedź, tylko jedna rzecz dodać, jak nie mogę jeszcze komentarza :-(Może ktoś inny ma ten sam problem z react- ładujący

mam samo przy użyciu reakcji, wraz z ładujący 0.30.8 reaguje 15.5.3

Uwaga: Niekontrolowane (rozwijane): React.createClass jest nieaktualna i zostaną usunięte w wersji 16. Zamiast tego użyj zwykłych klas JavaScript. Jeśli nie jesteś jeszcze gotowy do migracji, tworzenie-klasa-reakcji jest dostępna na npm jako zamiennik.

ja dostać w: niekontrolowanych/createUncontrollable.js --->

var component = _react2.default.createClass(_extends({ 

[email protected] jest dep od reagują-bootstrap 0.30.8

i

Ostrzeżenie : Dostęp do PropTypes za pośrednictwem głównego pakietu React jest przestarzały. Zamiast tego użyj pakietu prop-types z npm.

reagować-bootstrap/es/PanelGroup.js --->

accordion: React.PropTypes.bool 

myślę obniżenia reakcji jest jedynym sposobem na obejście tutaj, jak reagować-bootstrap nie jest jeszcze wystarczająco daleko.

4

React v15.5.0 realizuje new warnings

Obniżanie reagują na 15.4.x działa na mnie

npm install --save [email protected] [email protected] 
+0

niesamowite, aktualizując do nowej wersji 5 ostrzeżenia o błędach poszły .. –

+0

@eugen_sunic - wersja 5 czego? co zaktualizowałeś? – Giladd

+0

Reakcja pakiet dom .. To nie jest wersja 5, mówię, że usunięto 5 błędów –

11

reagować 15.5.0 zawierają nowe ostrzeżenia należą do zmian, które przyjdą na React 16, ostrzeżenie, że otrzymujesz, jest faktycznie informacją, że trzeba wdrożyć nowy sposób (ponieważ obecny sposób, którego używasz, będzie przestarzały w 16).

React.createClass, masz 2 opcje, pierwszą z nich jest po prostu użyć zwykłego JS składnię:

function Welcome(props) { 
    return <h1>Hello, {props.name}</h1>; 
} 

lub użyć modułu create-react-class (availiable na KMP):

// Before (15.4 and below) 
var React = require('react'); 

var Component = React.createClass({ 
    mixins: [MixinA], 
    render() { 
    return <Child />; 
    } 
}); 

// After (15.5) 
var React = require('react'); 
var createReactClass = require('create-react-class'); 

var Component = createReactClass({ 
    mixins: [MixinA], 
    render() { 
    return <Child />; 
    } 
}); 

O ostrzeżeniu PropTypes , sprawdź, czy używasz modułu używającego PropTypes, czasami pochodzi on z części zewnętrznej.

W każdym razie, aby przeczytać więcej na ten temat, zapraszamy do dostać Facebook blog post about those changes

+0

Możesz również użyć klas es6 do zdefiniowania komponentów –

+0

Najlepsza odpowiedź, ponieważ jest to na miejscu z sugestią w konsoli narzędzi dev. Dostęp do createClass za pośrednictwem głównego pakietu React jest przestarzały i zostanie usunięty w React v16.0. Zamiast tego użyj prostej klasy JavaScript. Jeśli nie jesteś jeszcze gotowy do migracji, utwórz-klasa-reagowania v15. * Jest dostępna na npm jako tymczasowy zamiennik. – Chad

3

Uważam, że ostrzeżenie było obecne bo importowania reagują z

import * as React from 'react' 

zmienia to

import React from 'react' 

powoduje, że ostrzeżenia znikają

+0

podczas korzystania z funkcji Flow wymagane są inne pliki importu. Oto inne obejście tego problemu: https://gist.github.com/turadg/9bcf08a7279e82a030a645250639fe6e – Turadg

Powiązane problemy