2017-05-22 2 views
0

Ich baue eine React + Mobx App und ich habe eine Situation, in der ich eine Komponente habe, die nichts rendert, weil sie alle auf einer 3rd Party Map API basiert, aber ich muss auf einige Speichereigenschaftenänderungen reagieren:Wie man auf eine Requisiteänderung reagiert, ohne es mit mobx rendern zu lassen

componentDidMount() { 
    mapApi.doSomething(this.props.store.value) 
} 

componentWillReact() { 
    mapApi.doSomething(this.props.store.value) 
} 

render() { 
    //workaround to make componentWillReact trigger 
    console.log(this.props.store.value) 
    return null 
} 

Gibt es eine elegante Weise, das zu implementieren?

Antwort

1

verwenden könnte, wenn ich Sie richtig verstanden habe, wollen Sie etwas reagieren, die in Render-Funktion nicht verwendet. Sie können etwas tun:

@observer 
class ListView extends React.Component { 
    constructor(props) { 
     super(props) 
    } 

@observable filterType = 'all' 

handleFilterTypeChange(filterType) { 
    fetch('http://endpoint/according/to/filtertype') 
    .then() 
    .then() 
} 

    // I want the method that autoruns whenever the @observable filterType value changes 
hookThatDetectsWhenObservableValueChanges = reaction(
    () => this.filterType, 
    filterType => { 
     this.handleFilterTypeChange(filterType); 
    } 
) 
} 

Diese Lösung wird hier erwähnt https://github.com/mobxjs/mobx-react/issues/122#issuecomment-246358153

Verwandte Themen