我做了如下的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.propsIUserInformation类型,也就是{ 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;

10-06 12:15