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

React Native使用MUI库遇View config getter callback错误求助

解决React Native中使用MUI库时的Invariant Violation错误

问题根源

  • 未定义的style变量:代码中使用了style={style.Text},但未定义style变量,仅导入了externalStyle,导致style为undefined,触发错误。
  • Web端MUI组件与React Native不兼容:你导入的@mui/material/Button是Web端组件,不支持React Native的style属性,两者样式体系不匹配(Web端MUI用sx/className,React Native用专属样式对象)。

修复步骤

1. 修正未定义变量问题

将style={style.Text}替换为已导入的externalStyle.Text:

<Button style={externalStyle.Text}>Contained</Button>

2. 替换为React Native适配的MUI组件

Web端@mui/material组件无法直接在React Native中运行,需使用MUI专为React Native打造的@mui/material-native库:

  • 安装依赖:
npm install @mui/material-native @emotion/react @emotion/native
  • 替换组件导入:
import Button from '@mui/material-native/Button';
import Stack from '@mui/material-native/Stack';

3. 适配React Native的交互逻辑

React Native中没有href属性,链接跳转需通过onPress事件处理:

<Button variant="contained" onPress={() => {/* 此处添加导航逻辑 */}}>
  Link
</Button>

完整修复代码示例

import * as React from 'react';
import Button from '@mui/material-native/Button';
import Stack from '@mui/material-native/Stack';
import {Text} from 'react-native';
import externalStyle from './Style/externalStyle'

export default function ContainedButtons() {
  return (
    <Stack direction="row" spacing={2}>
      <Button style={externalStyle.Text}>Contained</Button>
      <Button variant="contained" disabled>
        Disabled
      </Button>
      <Button variant="contained" onPress={() => {/* 处理导航逻辑 */}}>
        Link
      </Button>
    </Stack>
  );
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.09 18:38:25