我在我的 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
改变后,似乎没有触发渲染功能。
即使组件是状态订阅者,关于如何不触发重新渲染的任何建议?