2016-05-05 13 views
6

Ktoś wie, dlaczego to ostrzeżenie zmierza w górę?ReactNative.createClass jest przestarzałe, użyj React.createClass z pakietu "React" zamiast:

Kolejne ostrzeżenie: ReactNative.createElement jest przestarzałe. Zamiast tego użyj React.createElement z pakietu "react".

Kodeks:

var React = require('react-native'); 

var { 
Text, 
View, 
StyleSheet, 
} = React; 

module.exports = React.createClass({ 
render: function(){ 
return(
    <View> 
    <Text>{this.props.titleName}</Text> 
    </View> 
); 
} 
}); 

var styles = StyleSheet.create({ 
container:{ 

}, 
text:{ 

} 
}); 

Odpowiedz

18

importowanie reagować z reakcji natywną jest deprecated in 0.25.1. Przestanie działać w 0.26.

Należy to zrobić teraz:

import React from 'react'; 

import { 
    Text, 
    View, 
    StyleSheet, 
} from 'react-native'; 

Edit: Jeśli wciąż dostać ostrzeżenia Deprecation po ustaleniu kodu, prawdopodobnie używasz zależnościami, które jeszcze nie zostały zaktualizowane. Aby naprawić te ostrzeżenia, wykonaj następujące czynności:

  1. Sprawdź, czy dostępne są aktualizacje, które naprawiają import.
  2. Użyj this script, aby przepisać swoje zależności, aby automatycznie używać prawidłowych importów. Zajmie to trochę czasu i przepisanie niektórych plików, które nie mają nic wspólnego z reagowaniem. jscodeshift -t transform.js PATH_TO_YOUR_PROJECT/node_modules/
  3. Aby znaleźć pozostałe pliki, które wymagają React from natywny z reagowania, można ustawić punkt przerwania w node_modules/react-native/Bibliotek/ReactNative/ReactNative.js w linii 41, gdzie następuje ostrzeżenie.

Po znalezieniu zależności, która nie została zaktualizowana, prawdopodobnie najlepiej jest przesłać problem lub jeśli masz czas PR.

+1

Mam również ten problem. Jak znaleźć źródło błędu po dwukrotnym sprawdzeniu React jest importowany z "reagowania"? Czy to możliwe w jednym z niezliczonych modułów node_modules? Niestety narzędzia do debugowania nie są bardziej szczegółowe. –

+2

Tak, prawdopodobnie jest to jedna z twoich zależności. Najlepszą metodą, jaką znalazłem do tej pory, jest ustawienie punktu przerwania w node_modules/react-native/Libraries/ReactNative/ReactNative.js w linii 41, w której pojawiło się ostrzeżenie. –

+1

FYI, codemod połączone z # 2 obsługuje teraz odmianę, jeśli style importu zawierają destructuring gdzie indziej. – reergymerej

Powiązane problemy