javascript - 为什么我的变量的值没有显示在我的反应组件的渲染中?
问题描述
我对 REACT 很陌生,我觉得这是一个非常简单的解决方案,但是我没有找到任何可以帮助我的东西,所以我想在这里尝试问问自己。
我有一个组件,我试图根据 location.pathname 更改文本。代码如下所示:
import React, { useEffect } from "react";
import { useLocation } from "react-router-dom";
function PageTitle(props) {
let location = useLocation();
let title;
useEffect(() => {
let page = location.pathname;
changeTitleState(page);
});
function changeTitleState(page) {
switch (page) {
case "/":
title = "About Me";
console.log("The title is " + title)
break;
case "/portfolio":
title = "Portfolio";
console.log("The title is " + title)
break;
case "/contact":
title = "Contact"
console.log("The title is " + title)
break;
default:
title = "";
break;
}
};
return (
<div className="content">
<div className="container my-3 p-3 border border border-info bg-light">
<div className="d-flex row">
<div className="align-items-baseline col-lg-12 text-info">
<h1 className="display-4 text-center text-lg-left">{title}</h1>
</div>
</div>
<hr className="my-3" />
{props.children}
</div>
</div>
)
};
export default PageTitle;
我有一个名为“title”的变量,它带有一个函数来切换该变量的字符串,然后将其显示在它下面的渲染中。但是,它没有出现。我认为这可能是一个范围问题,但我觉得我在代码中正确地使用了这个,所以也许这是我不熟悉的 REACT 怪癖。我在这里错过了什么吗?
解决方案
当 location.pathname 更改时,您需要 title 为 state 并更新
let title
应该
const [title, setTitle] = useState('');
并在您的 changeTitleState 函数中调用 setTitle
function changeTitleState(page) {
switch (page) {
case "/":
setTitle("About Me");
console.log("The title is " + title)
break;
case "/portfolio":
setTitle("Portfolio");
console.log("The title is " + title)
break;
case "/contact":
setTitle("Contact");
console.log("The title is " + title)
break;
default:
setTitle("");
break;
}
};
推荐阅读
- php - 在我的 Google Search Console 中添加了不必要的 URL 并出现重定向错误
- python - 如何在使用 asyncio 编写的多客户端聊天应用程序中加密消息
- html - 在固定 div 上滚动无法正常工作
- visual-studio-2019 - 在 Visual Studio 源代码中可以将列表数据显示为表格
- spring-boot - 为什么查询结果映射为 COUNT(*) 的空值?
- python - 如何使用python从网格坐标中提取沿水平和垂直的最大值?
- python - wxPython 应用程序没有响应
- android - 检测眨眼算法
- python-3.x - 在for循环外获取变量值
- python - 从字符串中提取日期并将数据框提取到新列python中