首页 > 解决方案 > Invariant Violation:试图注册两个同名的视图RNCAndroidDropdownPicker

问题描述

导入并使用模块 react-native-picker 后:

import {Picker} from '@react-native-picker/picker';
 <Picker
    selectedValue={this.state.language}
    style={{height: 50, width: 100}}
    onValueChange={(itemValue, itemIndex) =>
              this.setState({language: itemValue})
        }>
    <Picker.Item label="Java" value="java" />
    <Picker.Item label="JavaScript" value="js" />
 </Picker>   

我收到以下错误:

Invariant Violation: Tried to register two views with the same name RNCAndroidDropdownPicker

这里出了什么问题?

标签: javascriptreact-native

解决方案


要摆脱这种情况,请执行以下操作:

由于错误是关于注册两个具有相同名称的视图,因此请Picker以这种方式声明:

import { Picker as SelectPicker } from '@react-native-picker/picker';

代替import { Picker } from '@react-native-picker/picker';

并像这样实现:

<SelectPicker
  selectedValue={this.state.language}
  style={{ height: 50, width: 100 }}
  onValueChange={(itemValue, itemIndex) =>
    this.setState({ language: itemValue })
  }>
  <SelectPicker.Item label="Java" value="java" />
  <SelectPicker.Item label="JavaScript" value="js" />
</SelectPicker>

如果上述解决方案不起作用,请执行此操作

$ npm uninstall --save-dev @react-native-picker/picker
$ npm i @react-native-picker/picker --save
$ cd android
$ ./gradlew clean
$ cd ..
$ react-native run-android

更新:

这是native-base. 像这样卸载native-base并重新安装:

$ npm uninstall native-base --save
$ npm install native-base --save

此问题已在最新版本的native-base.


推荐阅读