我正在尝试使用简单的“提取 - 刷新”列表。我试图复制@ sankhadeeproy007在#269中显示的动画gif,但它会抛出以下错误。
不变违规:元素类型无效:期望一个字符串(对于内置组件)或一个类/函数(对于复合组件)但得到:undefined。您可能忘记从其定义的文件中导出组件。请检查
devicePage
的呈现方法。此错误位于:在KeyboardAwareScroll中创建的ScrollView(由KeyboardAwareScrollView创建)(在Content.js:10中)由ContentPage(由SceneView创建)的Styled(内容)(由devicePage创建)中的Content(由Styled(Content)创建)在withWachedChildNavigation(DrawerScreen)中的DrawerScreen(由withCachedChildNavigation(DrawerScreen)创建)中的SceneView(由DrawerScreen创建)
我的简单组件的代码如下:
'use strict'
import React, { Component } from 'react';
import { Content, View, List, ListItem, RefreshControl, Text } from 'native-base'
class devicePage extends Component {
constructor () {
super()
this.state = {
refreshing: false,
}
}
render() {
const items = ['Bike 1', 'Bike 2', 'Bike 3']
return (
<Content refreshControl={this._refreshControl()}>
<View>
<List
dataArray={items}
renderRow={(item) =>
<ListItem>
<Text>{item}</Text>
</ListItem>
} />
</View>
</Content>
)
}
_refreshControl(){
return (
<RefreshControl
refreshing={this.state.refreshing}
onRefresh={()=>this._refreshListView()} />
)
}
_refreshListView(){
//Start Rendering Spinner
this.setState({refreshing:true})
console.log.tron('refreshing...')
this.setState({refreshing:false}) //Stop Rendering Spinner
}
}
export default devicePage;
问题在于refreshControl。如果我从内容中删除它,页面呈现正确。 如果我将refreshControl移动到List,我会得到与之前相同的错误。
如果我将refreshControl移动到View选项卡中,如:
<View refreshControl={this._refreshControl()}>>
<List
dataArray={items}
renderRow={(item) =>
<ListItem>
<Text>{item}</Text>
</ListItem>
} />
</View>
我收到警告:
警告:React.createElement:type无效 - 需要一个字符串......
我正在使用的相关包和版本是:
"native-base": "2.3.2",
"react-native": "0.49.1",
"react": "16.0.0-alpha.12"
有什么建议吗?
解决方案解决方案是从react-native而不是native-base导入RefreshControl