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

如何在React Toastify中传递变量?实例问题求助

嘿,这个问题我熟~你之所以看到提示框显示"msg"而非变量值,是因为你把变量名当成字符串直接写在JSX里啦!React会把引号包裹的内容当作纯文本渲染,自然不会解析变量。下面给你几种正确的解决方案:

1. 基础用法:正确引用变量

直接用{}包裹变量,让React识别这是一个变量而非字符串:

import { toast } from 'react-toastify';

const msg = 'Hello World.<br/>This is awesome.<br/>Be Happy';
// 这里用{}包裹msg,而不是直接写msg
toast.error(<div>{msg}</div>);

不过这里有个小细节:你的msg里包含<br/>标签,直接这么写的话,React会把它当成纯文本显示出来(也就是你会看到<br/>字样,而不是换行)。如果想要实现换行效果,看下面两种处理方式:

2. 解析HTML标签(快速实现换行)

如果确定msg的内容是安全的(比如不是用户输入的内容),可以用dangerouslySetInnerHTML让React解析HTML标签:

toast.error(<div dangerouslySetInnerHTML={{ __html: msg }} />);

⚠️ 注意哦:这个方法叫"dangerously"是有原因的,如果内容来自用户输入,可能会有XSS攻击风险,一定要谨慎使用!

3. 安全拼接React元素(推荐)

不想冒XSS风险的话,我们可以把字符串拆分后用React元素拼接:

import React from 'react';
import { toast } from 'react-toastify';

const msg = 'Hello World.<br/>This is awesome.<br/>Be Happy';
// 按<br/>分割字符串
const msgSegments = msg.split('<br/>');

toast.error(
  <div>
    {msgSegments.map((segment, idx) => (
      <React.Fragment key={idx}>
        {segment}
        {/* 最后一段不要加<br/> */}
        {idx !== msgSegments.length - 1 && <br />}
      </React.Fragment>
    ))}
  </div>
);

这种方式完全通过React的方式渲染内容,安全又可靠,适合大多数场景。

核心总结一下:在JSX中引用变量必须用{变量名}的形式,而不是直接写变量名~根据内容是否包含HTML标签,选择对应的渲染方式就好啦!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 08:24:22