javascript - 尝试使用 mobX 代替 setState

标签 javascript mobx mobx-react mobx-react-form

尝试替换react中的setState。在 mobX 中使用 observable 更改 this.info 的值时遇到问题。当我 console.log(e.target.name, e.target.value) 时,该值仅返回一个字母。

//Login
import * as React from 'react';
import { extendObservable } from 'mobx';
import { observer }  from 'mobx-react';

constructor(props) {
        super(props);

        extendObservable(this, {
            info: {
                username: '',
                password: ';
            }
        })
    }

onChange = (name, value) => {
    this.info[name] = value
}

render(){
    <LoginForm info={this.info} onChange={this.onChange}/>
}
//LoginForm
import * as React from 'react';
import {Form} from "semantic-ui-react";

const onChange = (props) => (e) => {
    props.onChange(e.target.name, e.target.value)
    console.log(e.target.name, e.target.value)
};

const LoginForm = (props) => {
    return (
                    <Form.Input fluid label='username' placeholder='username' name="username"
                                value={props.info.username|| ''}
                                onChange={onChange(props)} type="text" />
                    <Form.Input fluid label='password' placeholder='password' name="password"
                                value={props.info.passoword || ''}
                                onChange={onChange(props)} type="text"/>
    )
}


最佳答案

试试这个怎么样? 更改信息对象而不是对象中的值

import { action, extendObservable } from "mobx";
onChange = action((name, value) => {
  this.info = { ...this.info , [name]: value };
});

关于javascript - 尝试使用 mobX 代替 setState,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55735023/

相关文章:

javascript - 使用javascript在listview中仅显示某些列表项

javascript - 静态类型的 nodeJS 可能吗?即 typescript

javascript - ReactJs 和 D3.js : Uncaught (in promise) SyntaxError: Unexpected token < in JSON at position 0 at responseJson

javascript - 数字类型上的 @observable 不会创建 observable

mobx - 我如何观察 mobx 可观察 map 中的任何变化(添加、删除或更改的属性)?

javascript - 使用 mobx-react-lite 和 React hooks 在 React Native 中获取函数

javascript - 如何降低以下代码的治理成本

javascript - MOBX 默认的、从其他状态派生的可编辑状态

javascript - 在 React 项目中导入捕鼠器 - 无法读取未定义的属性 'bind'

javascript - 使用 MobX 中的 `useLocalObservable` 来处理 TypeScript 时出现 TypeError?