元素类型无效:期望一个字符串但得到:object

时间:2017-01-25 15:34:13

标签: react-native redux react-redux

  

“元素类型无效:期望一个字符串(对于内置组件)   或类/函数(对于复合组件但得到:对象。检查   AppContainer的渲染方法。

我收到的错误最初显示在教程视频中:

https://youtu.be/6zVGVHWklg8?t=6m1s

文件已正确命名为“/app/containers/ApplicationTabs/index.ios.js”,文件内容完全如教程中所示。

然而,一旦ApplicationTabs被“连接”,应用程序在视频中工作的地方我自己也会在这样做之后收到上述错误。

我正在使用更多版本的react / react-native / redux模块。我不确定使用具有OS特定命名的文件的约定是否会影响它们的导入方式?

以下是我的package.json依赖项:

"dependencies": { 
  "react": "15.4.2", 
  "react-native": "0.40.0", 
  "react-redux": "^5.0.2", 
  "redux": "^3.6.0", 
  "redux-logger": "^2.7.4", 
  "redux-thunk": "^2.2.0" 
}

这是“/app/containers/ApplicationTabs/index.ios.js”的内容:

import { View, TabBarIOS, TabBarItemIOS } from 'react-native'; 
import React, { Component } from 'react'; 
import { connect } from 'react-redux'; 

class ApplicationTabs extends Component { 
  render() { 
    return ( <View /> ); 
  } 
} 

function mapStateToProps(state) { 
  return { }; 
} 

export default connect(mapStateToProps)(ApplicationTabs);

这是“/app/containers/AppContainer.js”的内容:

import React, {Component} from 'react'; 
import {connect} from 'react-redux'; 
import {ActionCreators} from '../actions'; 
import {bindActionCreators} from 'redux'; 
import ApplicationTabs from './ApplicationTabs'; 

class AppContainer extends Component { 
  render() { 
    return ( <ApplicationTabs { ...this.props } /> ) 
  } 
} 

function mapDispatchToProps(dispatch) { 
  return bindActionCreators(ActionCreators, dispatch); 
} 

export default connect( () => { return {} }, mapDispatchToProps)(AppContainer);

1 个答案:

答案 0 :(得分:0)

请查看react-redux教程:http://redux.js.org/docs/basics/UsageWithReact.html也许这会有所帮助。

import {connect} from 'react-redux'; 
import {ActionCreators} from '../actions'; 
import {bindActionCreators} from 'redux'; 
import ApplicationTabs from './ApplicationTabs'; 

function mapDispatchToProps(dispatch) { 
  return bindActionCreators(ActionCreators, dispatch); 
} 

const AppContainer = connect( null, mapDispatchToProps)(ApplicationTabs);

export default AppContainer;

容器由connect函数表示,您可以告诉它应该包含哪个组件。