如何为从.txt文件读取的换行添加<br>标签?
问题解决方法
你代码里的问题主要有两个:
- JavaScript的字符串是不可变的,
replaceAll方法不会修改原字符串,只会返回一个新的字符串,你得把这个新结果存下来再返回 - React里直接输出带
<br>的字符串,它会把标签当普通文本显示,得用dangerouslySetInnerHTML来渲染HTML内容
修改后的代码如下:
import biology from './notes/biology.txt'; import './App.css'; import React, {useState, useEffect} from 'react'; function App() { const [BioText, setBioText] = useState('Failed to fetch text'); useEffect(() => { const getData = async () => { const response = await fetch(biology) .then(r => r.text()) .then(BiologyText => { console.log('text decoded:', BiologyText); // 把replaceAll的结果赋值给新变量 const formattedText = BiologyText.replaceAll(/(\r\n|\r|\n)/g, '<br>') console.log(formattedText) return formattedText }); setBioText(response); }; getData() }, []); // 用dangerouslySetInnerHTML渲染带HTML的内容 return <div dangerouslySetInnerHTML={{ __html: BioText }} />; } export default App;
额外说明:你用的正则已经覆盖了所有常见的换行符格式(Windows的\r\n、旧Mac的\r、Unix/Linux的\n),不用再调整匹配规则。
内容的提问来源于stack exchange,提问作者casbear
相关产品推荐
相关产品推荐

