【发布时间】:2020-11-07 21:21:45
【问题描述】:
我遇到了一些可能非常简单的 OOP 问题。我有一个呈现一些 html 的类。但是,它有一个 onClick 调用一个函数,如果单击图像,该函数会在类内设置一个标志。现在问题来了,当我渲染这个类对象并从一个单独的 js 文件中单击按钮时,它保持为假。我希望它在单击时将标志永久更改为 true。这里是类...
class Settings extends React.Component {
handleClick() {
this.flag = true;
console.log(this.flag)
}
render(){
return(
<img src="./img/leaf.png" alt="" onClick={() => this.handleClick()}/>
);
}
}
这是从单独文件中调用它的代码...
const settingsObj = new Settings();
console.log(settingsObj.flag);
我希望标志为假,直到按钮被点击,然后它永久更改为真。但它只有在我的页面随着新数据的进入而重新呈现并且它重置为 false 时才会成立。我尝试了构造函数和其他一些技术,但没有成功。
【问题讨论】:
-
使用本地存储保存数据,否则每次刷新都会为假developer.mozilla.org/en-US/docs/Web/API/Window/localStorage
-
如果你想永久保存一些东西,你需要在服务器或本地存储中存储一些东西。如果您希望某些内容仅适用于当前会话,则可能需要查看 Context
-
你为什么要显式调用
const settingsObj = new Settings();?通常,组件在 React 中是相互添加的,这是确保状态保持不变的方法,直到您更改它们的值。如果你有 Component App,可以考虑在 App 的 render 函数中添加 Settings Component,有点像render() { return (<Settings />); }。 React 会为你做正确的 OOP 调用 -
我绝对想要后者,上下文。有任何链接或解决方案吗?
-
KeitelDOG 你能举个例子吗?如果我移除对象但它不持有,我就是这样做的。
标签: javascript reactjs class oop object