Touchable类型的组件的子组件为复合类型时出现的错误解决
来源:互联网 发布:云计算hadoop基础考题 编辑:程序博客网 时间:2024/06/13 01:18
先上代码
//渲染方法renderRow(rowData,sectionID,rowID,highlightRow) { return ( <TouchableHighlight onPress={() => { this._rowPressed(sectionID, rowID); } } style={{}} underlayColor='red'> <IndexListViewItem rowData={rowData} sectionID={sectionID} rowID={rowID}/> </TouchableHighlight> ); }//IndexListViewItem自定义组件'use strict';import React, { Component } from 'react';import { StyleSheet, View, Text,} from 'react-native';class IndexListViewItem extends Component { render() { return ( <View style={{flexDirection: 'row',justifyContent: 'center',backgroundColor: '#F6F6F6',}}> <Text style={{fontSize: 18}}> {this.props.rowData} </Text> </View> ); }}const styles = StyleSheet.create({});export default IndexListViewItem;
这里直接运行会报错:touchable child must either be native or forward setnativeprops to a native component。
总结出错的原因是,Touchable类型的组件会自动给子组件传递一些props,但是这些props只支持原生组件,如果是自定义的复合组件就会出问题。就好像你给自定义的复合组件直接设置style,那这个style到底是设置到复合组件的哪个子组件上呢?就会有问题,解决办法就是在自定义的复合组件里使用setNativeProps方法把Touchable设置的props传递给自定义复合组件内部的原生子组件。
1、在子组件内部添加如下代码
setNativeProps(nativeProps) { this._root.setNativeProps(nativeProps);}
2、在子组件内部的第一个子原生组件中添加如下属性
ref={component => this._root = component}
3、如果Touchable类型是TouchableOpacity,还需要在子组件内部添加如下代码,用来传递props
{...this.props} //新语法,相当于取出所有的props
PS、为什么要添加第三条还没搞太明白,希望有高手能指教一下
0 0
- Touchable类型的组件的子组件为复合类型时出现的错误解决
- 5.7 映射组件属性:组件属性的子属性为基本类型
- React-组件的复合
- React-组件的复合
- 组件的X类型 XTypes
- 解决WebService部署时出现的“未能创建类型...”错误
- 解决WebService部署时出现的“未能创建类型...”错误
- 解决WebService部署时出现的“未能创建类型...”错误
- 复合类型的声明
- 组件(Widget)的复合使用
- 解决,从 IClassFactory 为 CLSID 为 的 COM 组件创建实例失败,原因是出现以下错误: 80004005
- ServiceMix 中使用file组件时出现无效的property的错误问题的解决
- Dynamics CRM 删除字段时检测到有组件类型为查看的依赖组件而无法删除问题
- 引用COM组件时“将类型库转换为.NET程序集失败”的解决办法
- 解决Excel 互操作错误"检索COML类工厂中 CLSID为 {00024500-0000-0000-C000-000000000046}的组件时失败,原因是出现以下错误: 80070005"
- 对 IID 为“{00020970-0000-0000-C000-000000000046}”的接口的 COM 组件调用 QueryInterface 因以下错误而失败: 加载类型库/DLL 时出错。
- COM组件与编译的字符集类型
- Android四个重要的组件类型
- 样式,表现分离--微博发言三种方式
- 汇编的8种寻址方式,以及2个默认段寄存器
- Android学习笔记—网络请求
- Java数据结构和算法:位运算
- C++指针详解
- Touchable类型的组件的子组件为复合类型时出现的错误解决
- 广州芳村信义会馆1850创意园拍摄之旅
- PhpStorm支持CodeIgniter框架的代码智能提示
- Java虚拟机系列(二):垃圾收集器与内存分配策略
- [笔试练习]美团笔试题
- Python的一些零碎的东西
- iOS开发 图文混编
- keep on coding8.26-2
- SU和SUDO的辨析