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

React Native报错:Text strings需在<Text>组件内渲染问题排查

问题原因

你写的{console.log('error', error)}直接嵌在了JSX的组件树里,这会让React Native尝试渲染这个表达式的返回值(undefined)。虽然undefined本身不会显示,但React Native会把它当作文本节点处理,而所有文本内容必须被<Text>组件包裹,所以触发了这个错误——你的日志代码不小心变成了要渲染的内容的一部分,这才和Text组件扯上了关系。

修复方案

有两种简单的修复方式,按需选择:

方式1:把日志移到组件内部的监听逻辑中

如果想在error变化时自动打印,用useEffect监听error的变化即可,完全脱离JSX渲染流程:

import React, { useEffect } from "react";
// ... 保留其他导入代码

const RegisterComponents = ({ onChange, onSubmit, form, errors, loading, error }) => {
    const { navigate } = useNavigation();

    // 监听error变化,自动打印日志
    useEffect(() => {
        console.log('error', error);
    }, [error]); // 只有error改变时才执行打印

    return (
        // ... 保留原JSX内容,删掉那行{console.log(...)}
    );
};

方式2:把日志放到提交按钮的点击逻辑里

因为你的需求是点击提交按钮时打印错误,直接把日志写在按钮的点击回调里更贴合需求:

// 修改CustomButton的onPress属性
<CustomButton
    loading={loading}
    onPress={() => {
        console.log('error', error);
        onSubmit();
    }}
    disabled={loading}
    primary title="Submit" />

最后一定要删除JSX中那行{console.log('error', error)};,彻底移除这个引发错误的代码。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 20:50:27