【发布时间】:2021-02-04 21:36:36
【问题描述】:
我希望我的代码跨文件函数(App.js 和 startMenu.js)更新变量“currentPage”。目前我可以只使用 App.js 来处理状态,但想简化我的代码,以便我可以使用目录中的其他 *.js 文件。现在 startMenu.js 以 App.toMainMenu 和 App.toLevelBuilder 的形式从 App.js 调用,但它没有像我希望的那样更新状态变量“currentPage”onClick。
App.js:
import React, {useState} from "react";
import startMenu from "./startMenu";
import levelBuilder from "./levelBuilder";
function App(){
const[currentPage, setPage] = useState("start")
function toMainMenu(){
setPage(prevPage => "main")
}
function toLevelBuilder(){
setPage(prevPage => "levels")
}
function renderSwitch(param) {
switch(param) {
case 'levels':
return levelBuilder();
default:
return startMenu();
}
}
return (
<div >
<span>{currentPage}</span>
{renderSwitch(currentPage)}
</div>
)
}
export default App;
startMenu.js
import React, {useState} from "react";
import levelBuilder from "./levelBuilder";
import App from "./App";
function startMenu() {
return(
<div className="container">
{/* start menu */}
<img id = "scan_logo"src={process.env.PUBLIC_URL + '/scanlogo.png'} />
<button id="menuStart" onClick={App.toMainMenu}> START </button>
<button id="menuLevel" onClick={App.toLevelBuilder}> LEVEL BUILDER </button>
</div>
)
}
export default startMenu;
我在想我需要使用道具,但作为一个 React.js 初学者,这让我有点困惑。任何想法将不胜感激!
谢谢!
【问题讨论】:
-
你使用函数式组件而不是类组件有什么原因吗?
-
你可以把你的代码放在codesandbox上方便
-
功能组件和钩子是要走的路。
-
我正在使用功能组件,因为我的印象是不能将状态与类组件一起使用
标签: javascript reactjs state jsx react-props