我做了如下的mobx商店。
我在store.js中声明了操作类型
import { action, observable } from 'mobx';
export class SignStore {
@observable
UserInformation: {
email: '';
password: '';
};
@action
handleChange = (e: any): void => {
this.UserInformation[e.target.id] = e.target.value;
};
}
我给这家店注入了一种成分。
我在这里声明了用户信息的类型。
但是'const{signstore}=this.props;'这里,
招牌店说
类型“readonly&readonly'。
import * as React from 'react';
import { observer, inject } from 'mobx-react';
interface IUserInformation {
email: string;
password: string;
}
@inject('SignStore')
@observer
class SignUp extends React.Component<IUserInformation> {
render() {
const { SignStore } = this.props;
return (
<div className="container">
<form className="white" onSubmit={}>
<h5 className="grey-text text-darken-3">Sign Up</h5>
<div className="input-field">
<label htmlFor="email">Email</label>
<input type="email" id="email" onChange={SignStore.handleChange} />
</div>
<div className="input-field">
<label htmlFor="password">Password</label>
<input
type="password"
id="password"
onChange={SignStore.handleChange}
/>
</div>
</form>
</div>
);
}
}
export default SignUp;
在这种情况下,你能推荐一些建议吗?
最佳答案
除其他问题外,主要的问题是this.props
是IUserInformation
类型,也就是{ email: string; password: string; }
然后尝试用const { SignStore } = this.props;
来解构显然props
没有SignStore
参数的结构。因为道具必须看起来像:{ email: string; password: string; SignStore: any }
。
我对mobx不是很熟悉,但似乎你至少需要一个isignstore的接口:
interface ISignStore {
UserInformation: IUserInformation;
handleChange: (e: any) => void;
}
然后将其用于组件:
class SignUp extends React.Component<ISignStore>
使用它就像:
const SignStore = this.props;