Я попытался создать систему аутентификации с Mobx в React.
Сначала я создал хранилище, как показано ниже.
Состояние входа в систему создается наблюдаемым, и выполняется действие для помещения входных данных в исходное состояние.
import { observable, action } from 'mobx'
export default class SingUpIn {
@observable initialState = {
login: {
form: {
email: '',
password: ''
}
}
}
@action changeInput = (email, password, type) => {
this.initialState.type.form.email = email
this.initialState.type.form.password = password
}
}
И я сделал компонент SignUp, как показано ниже.
Я сделал так, что входные данные Id и пароля
переводятся в исходное состояние в реальном времени.
Но здесь возникает ошибка
const {электронная почта, пароль} = this.props.form.toJs ()
Ошибка типа: this.props.form не определена
Iдумаю, что общая логика не очень хорошая, что я сделал.
Не могли бы вы порекомендовать некоторые решения для этого случая?
import React, { Component } from 'react'
import { Link } from 'react-router-dom'
import { observer, inject } from 'mobx-react'
@inject('SignUpIn')
@observer
class SignUp extends Component {
handleChange = e => {
const { SignUpIn } = this.props
const { name, value } = e.target
SignUpIn.changeInput({
name,
value,
form: 'login'
})
}
render () {
const { email, password } = this.props.form.toJs()
const { handleChange } = this
return (
<div>
<label for="email">Email</label>
<input
id="email"
name="email"
placeholder="email"
value={email}
onChange={handleChange}
/>
<label for="password">password</label>
<input
id="password"
name="password"
placeholder="password"
value={password}
onChange={handleChange}
/>
<button>Login</button>
<Link to="/signin">SignIn</Link>
</div>
)
}
}
export default SignUp