React Native錯誤彙總(持續更新)

錯誤1 Element type is invalid…:

錯誤描述:
Element type is invalid: expected a String(for built-in components) or a class/function(for composite components) but got:object. check the render method of ‘….’javascript

這裏寫圖片描述
這個錯誤是很不容易發現的緣由是因爲ES5語法和ES6語法混亂搭配致使的。php

ES5 語法 導出模塊java

module.exports = Page2;

ES5語法 引入模塊python

var NaviBar = require('./NaviBar');

ES6 導出語法react

export  default class Page2 extends Component {

ES6 語法 導入模塊json

import NaviBar from './NaviBar';

兩種語法混亂使用, 好比用ES6 導出 用ES5導入, 就可能會產生上述錯誤react-native

錯誤2

錯誤描述:
cannot call a class as a function微信

這裏寫圖片描述

這種錯誤通常都是手誤致使的, 錯誤直譯就是不能調用一個類做爲一個函數。
這個錯誤通常狀況下是很差找的,能夠看到 錯誤詳情第二部分指向的是ImageEquallyEnlarge.js 中的第11行, 這個文件是我建立的, 第11行是構造方法:markdown

constructor(props) { super(props); // 初始狀態 this.state = { //狀態機變量是一個style, 它將被用於定義顯示圖片的樣式 style: {} };
        this.onImageLayout=this.onImageLayout.bind(this);
    }

而錯誤地方通常不是第11行致使的,
緣由不少, 我只列舉下個人錯誤緣由:
這個文件我聲明瞭一個名字叫ImageEquallyEnlarge的組件, 爲了方便使用,我聲明瞭兩個屬性:函數

//控件屬性
ImageEquallyEnlarge.propTypes = {
    originalWidth: React.PropTypes.number.isRequired,
    originalHeight: React.PropTypes.number.isRequired
};

而產生的錯誤偏偏是由於這處我不當心寫錯了一個單詞,propTypes寫成了prototype

//控件屬性
// 聲明必需要有的圖片原始寬度與高度
ImageEquallyEnlarge.prototype = {
    ...
};

這樣就致使了上面的錯誤。 有時候越是粗心犯的錯誤越是很差解決, 你們開發的時候必定要細心。

錯誤4

錯誤描述
cannot read property ‘stringify’ of undefined

Paste_Image.png
咱們解析json對象是會用到stringify

let studentData = require('./data/student.json');
let newJSONString=JSON.stringify(studentData);

stringify是JSON對象中的方法, JSON是JS自帶的API,不要在React Native中引入了。若是你引入JSON默認就指向了一個空的引用就會報這個錯
因此千萬不要在代碼裏這麼寫:

import React, {Component} from 'react';
import {
    AppRegistry,
    StyleSheet,
    View,
    Text,
    JSON  //不要寫JSON
} from 'react-native';

更多精彩請關注微信公衆帳號likeDev,公衆帳號名稱:愛上Android。
這裏寫圖片描述

相關文章
相關標籤/搜索