我有一个简单的nextjs应用程序,我正在尝试使用javascript替换功能将“-”替换为空格“”。但是我收到错误,因为TypeError:无法读取未定义的属性“替换”。这是代码
import {useRouter} from 'next/router';
import Layout from '../../components/MyLayout';
const Post = () => {
const router = useRouter();
let resString = router.query.id.replace("-", " ");
return(
<Layout>
<h1>{resString}</h1>
<p>This is the blog post content.</p>
</Layout>
);
}
export default Post;
问题是,如果查询字符串为空,则没有该string
属性。
首先,您必须检查该属性是否存在,然后.replace()
像下面的示例一样使用它:
let resString = router.query.id ? router.query.id.replace("-", " ") : "";
还要注意,您必须使用以下示例中的正则表达式来实际替换所有出现的内容:
router.query.id.replace(/-/g, " ");
是的,我做到了,但是更换没有发生。我检查了router.query.id的类型,说它是一个字符串,但是我无法在其上调用replace函数。当我尝试正常的字符串,它的工作原理。
我添加了一张图片
我尝试toString()将其转换为字符串,即使此函数显示错误
使用您发现的最后一个问题的解决方案进行编辑...使用正则表达式,如此处所述w3schools.com/jsref/jsref_replace.asp
谢谢它的工作。但是你能向我解释为什么它不起作用。我好奇