Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 商店更改后,React Mobx不更新视图_Javascript_Reactjs_Rendering_Mobx - Fatal编程技术网

Javascript 商店更改后,React Mobx不更新视图

Javascript 商店更改后,React Mobx不更新视图,javascript,reactjs,rendering,mobx,Javascript,Reactjs,Rendering,Mobx,我刚刚开始使用Mobx。我喜欢Mobx,它在我项目的大部分时间都很有效。然而,我就是无法让看似简单的东西发挥作用。 在SelectField中更改requirement后,我在onChange事件中将新值设置为store.selectedRequirement。已成功调用onChange事件,并更新了存储值。但是,SelectField视图从未更新,它仍然指向旧项目。我找不出原因 @observer export default class OpenDialog extends Componen

我刚刚开始使用Mobx。我喜欢Mobx,它在我项目的大部分时间都很有效。然而,我就是无法让看似简单的东西发挥作用。 在SelectField中更改requirement后,我在onChange事件中将新值设置为store.selectedRequirement。已成功调用onChange事件,并更新了存储值。但是,SelectField视图从未更新,它仍然指向旧项目。我找不出原因

@observer
export default class OpenDialog extends Component {
    static propTypes = {
        store: PropTypes.object.isRequired
    }   

    static contextTypes = {
        router: React.PropTypes.object.isRequired       
    }

    handleClose = () => {
        this.props.store.openDialog = false;
    }

    componentWillMount = () => {
        const { store } = this.props;
        if(store.selectedRequirement === null)
            store.selectedRequirement = store.requirements[0];
    }

    render = () => {

        const { store } = this.props;

        const actions = [
              <RaisedButton
                label="Cancel"
                style={{marginRight: 16}}
                primary={true}
                onTouchTap={this.handleClose}
              />,
            ];

        const docItemsJSX = store.requirements
            .map((requirement) => {
                return (
                    <MenuItem   
                        key={'requirement-' + requirement.docId}
                        value={requirement}
                        primaryText={requirement.title + ' - ' + requirement.version}>
                    </MenuItem> 
                )                   
            }); 

        return (
            <Dialog
                    title="Open Requirements Document"
                    actions={actions}
                    modal={true}
                    open={store.openDialog}
                >

                <SelectField
                    style={{width: 300}}
                    floatingLabelText="Documents"
                    floatingLabelFixed={true}
                    value={store.selectedRequirement}
                    onChange={(event, index, value) => { 
                        store.selectedRequirement = value;
                    }}
                >
                    {docItemsJSX}
                </SelectField>

            </Dialog>       
        );
    }
}

请阅读-总结是,这不是一个理想的方式来解决志愿者,可能会适得其反获得答案。请不要将此添加到您的问题中。明白。谢谢。请阅读-总结是,这不是一个理想的方式来解决志愿者,可能会适得其反获得答案。请不要将此添加到您的问题中。明白。谢谢
@observable requirements = [{
    docId: 1,
    title: "Requirements1",
    version: "1.0",
    lastModifiedBy: "abc",
    lastModifiedDate: "11/11/2016",
    publishDate: "11/12/2016"
}, {
    docId: 2,
    title: "Requirements2",
    version: "1.0",
    lastModifiedBy: "def",
    lastModifiedDate: "11/13/2016",
    publishDate: "11/16/2016"
}];

@observable selectedRequirement = null;
@observable openDialog = false;