我是React和Javascript领域的超级新手,并试图通过制作Magic 8 Ball应用程序投入一些开发工作。
我设置了两个页面:
游戏页面功能正常工作(使用下面的server.js文件中的代码段),但是我现在想将游戏页面上有关问题总数的信息传递到统计页面。
我的基本想法是:
我遇到过几种不同的方法,但是只需要一些有关最佳方法的指导即可。
在实现此功能之前,我整理了几段内容:
index.js文件
<form className="question-input" method="POST" action="/">
<input type="text" ref="inputquestion" placeholder="Ask your question..."style={{ width: "300px", fontSize:18 }}/>
<button id="submitquestion" style={{ width: "100px", fontSize:17 }}>Shake Me!</button>
</form>
server.js文件
server.post('/', (req,res) => {
console.log("Received request.")
const answers = [
"It is certain.",
"It is decidedly so.",
"Without a doubt.",
"Yes - definitely.",
"You may rely on it.",
"As I see it, yes.",
"Most likely.",
"Outlook good.",
"Yes.",
"Signs point to yes.",
"Reply hazy, try again.",
"Ask again later.",
"Better not tell you now.",
"Cannot predict now.",
"Concentrate and ask again.",
"Don't count on it.",
"My reply is no.",
"My sources say no.",
"Outlook not so good.",
"Very doubtful."
]
const number = Math.floor(Math.random()*20);
res.status(200).send(answers[number]);
stats.js文件
class StatsPage extends Component {
render() {
return (
<main>
<Header />
<h1>Game Statistics</h1>
<p> Count: </p>
<style jsx>{`
h1 {
font-family:"Arial";
font-size:50px;
}`}
</style>
</main>
)
}
}
export default StatsPage;
我的问题是:每次在index.js文件中按下按钮(即问一个问题)时,如何在stats.js中呈现一个计数器变量?我应该使用saveToLocalStorage来确保计数器保持保存到其状态并且在每次刷新应用程序时都不会恢复为零吗?
另外-如果有人有任何改进意见,请分享!
谢谢你的时间。
如果您是React和JavaScript的新手,那么最好使用localStorage。这是解决问题的最简单的方法,并且是在刷新浏览器时阻止应用程序状态消失的好方法。
这样需要跨页面共享的状态可以保存在包装两个页面组件的父组件中。然后,父组件可以将状态作为道具传递给子组件。该父组件也可以在挂载时尝试从localStorage加载其初始状态(请参阅componentDidMount),并处理将状态写入localStorage的过程。
这是一个jsfiddle,上面是我上面描述的非常简化的示例。
作为附带说明,我看到您使用action
属性处理表单提交。这将导致您的页面刷新,这可能不是您想要的。一种解决此问题的React方法将使用的onSubmit
道具<form>
。请参阅React文档中的示例。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句