0

我在我的 React 应用程序中引入了 Mobx。该应用程序未使用任何框架(Flux Redux 等)。

inject在每个组件上,我首先使用包的装饰器注入状态mobx-react

const React = require('react');
import {observer, inject} from 'mobx-react';

@inject('myState') @observer
class MyComponent extends React.Component{...}

在更新时,我直接更改组件的 onChange 方法的状态,状态包含一个对象数组(blocks),每个块都有一些特定的属性:

onChange = (event) => {
    this.props.myState['blocks'][this.props.index][event.target.name] = event.target.value;
  }

然后我使用从状态中获取的值来渲染组件。

render = () => {
    const value = this.props.myState['blocks'][this.props.index]['myInput'];

    console.log('re rendering...');

    return (
        <div>
            <textarea value={value}
                      onChange={this.onChange} />
      </div>
    );
  }

onChange但实际上,在执行完并且状态myState改变后,似乎没有触发渲染功能。

即使组件是状态订阅者,关于如何不触发重新渲染的任何建议?

4

0 回答 0