You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Expo/React Native项目TypeError报错求助:react-native-elements按钮使用问题

解决React Native Elements Button组件的TypeError报错

嘿,我来帮你搞定这个头疼的报错!你遇到的TypeError: 在此环境中,assign的源必须是一个对象,本质是react-native-elements的Button组件在处理icon属性时,内部的Object.assign操作接收到了非对象类型的值,而Expo的性能优化机制又严格检查了这个不符合规范的操作,所以抛出了错误。

问题出在哪?

你现在直接把<Icon />这个JSX元素传给了icon属性,但在Expo的环境下,react-native-elements内部对icon的处理逻辑,会把这个JSX元素当成非对象类型来处理,触发了Object.assign的类型校验错误。

解决方案

这里有几个靠谱的解决办法,按推荐优先级排序:

1. 改用icon属性的对象配置形式(推荐)

react-native-elements的Button组件本身支持用配置对象来定义icon,这样能完美避开类型问题,让组件内部正确处理。修改后的代码如下:

return (
  <View>
    <Header />
    <Button
      icon={{
        type: "entypo",
        name: "plus"
      }}
      iconRight
      title="Add City"
    />
  </View>
);

2. 若坚持传JSX元素,用component字段包裹

如果你一定要手动传入Icon组件的JSX,可以把它放在icon对象的component字段里,这样内部处理时能识别为合法对象:

return (
  <View>
    <Header />
    <Button
      icon={{
        component: <Icon type="entypo" name="plus" />
      }}
      iconRight
      title="Add City"
    />
  </View>
);

3. 更新react-native-elements到最新稳定版

如果你的组件版本比较旧,可能存在这个兼容性bug。执行下面的命令更新:

# npm用户
npm install react-native-elements@latest

# yarn用户
yarn add react-native-elements@latest

内容的提问来源于stack exchange,提问作者Barry

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 10:35:55