【发布时间】:2019-02-02 07:09:15
【问题描述】:
我已尝试将代码简化为相关的内容。
class AnnotatedLayout extends React.Component {
state = {
user: '',
enabled: false,
};
render() {
const { user, enabled } = this.state;
const contentStatus = enabled ? 'Disable' : 'Enable';
const textStatus = enabled ? 'enabled' : 'disabled';
return (
...
<Form onSubmit={this.handleSubmit}>
<FormLayout>
<TextField
value={user}
onChange={this.handleChange('user')}
label="Shop Name"
type="user"
helpText={
<span>
Log in with your store username.
</span>
}
/>
<Stack distribution="trailing">
<Button primary submit>
Submit
</Button>
</Stack>
</FormLayout>
</Form>
...
);
}
handleSubmit = () => {
this.setState({
user: this.state.user
});
localStorage.setItem('user', JSON.stringify(this.state.user));
console.log('submission', this.state);
console.log(this.state.user);
};
handleChange = field => {
return value => this.setState({ [field]: value });
};
}
export default AnnotatedLayout;
基本上,我的网页有一个表单组件,在提交时,它正在执行 this.handleSubmit,该函数位于底部。
我的代码应该做的是使用键“user”将提交的字符串保存到 localStorage,但显然(您可以在下面的 console.log 输出中看到)这并没有发生。
知道发生了什么吗?
我的网站在本地托管,通过隧道连接到 URL,并用作 shopify 嵌入式应用的基本 URL,只是为了提供所有相关上下文。
更新
handleSubmit = () => {
this.setState({
user: this.state.user
},
() => localStorage.setItem('user', "SMH"),
console.log(localStorage.getItem('user'))
);
console.log('submission', this.state);
};
检查一下,提交我的文本表单后,这就是我得到的
localStorage 是不是类似于 local 或其他东西,以至于它不保存函数之外的任何内容??
【问题讨论】:
-
this.setState({ user: this.state.user })...什么,为什么? -
您是否尝试过从
localStorage.setItem("user", JSON.stringify(this.state.user))中删除JSON.stringify?已经是字符串了…… -
我现在正在关注一个教程,这就是他们所拥有的。 @user633183
-
你会发布 `this.handleChange 的代码吗?
-
@JackBashford,我也试过了,因为它不起作用,所以我用 JSON.stringify 尝试了它,但我只是在没有 stringify 的情况下运行它,结果相同,null ://
标签: javascript reactjs local-storage