요구 사항는 것입니다 :은 관찰자의 구성 요소가 업데이트 후 렌더링 호출되지 않은 반응 mobx
토글 시안의 배경색으로 행 구성 요소를
강조 선택한 행을 열
그러나 토글 버튼을 클릭하면 App 구성 요소가 다시 렌더링되지 않습니다. (
// App.js
import React, { Component } from 'react';
import {observable, action } from 'mobx';
import {observer} from 'mobx-react';
@observer class Rows extends Component {
rows() {
let { store } = this.props;
var rows = [];
for (var i = 4; i > 0; i--) {
rows.push(
<div
style={i == store.selectedRow ? { backgroundColor: "cyan" } : null }
onClick={store.selectRow.bind(this, i)}>
{ i }
</div>
)
}
return rows;
}
render() {
return (<div>{this.rows()}</div>);
}
}
class Store {
constructor(props) {
this.selectRow = this.selectRow.bind(this)
this.toggleSelector = this.toggleSelector.bind(this)
}
@observable showSelector = false;
@observable selectedRow = 4;
@action selectRow(n) {
this.selectedVersion = n;
}
@action toggleSelector() {
this.showSelector = !this.showSelector;
}
}
//edit here
const store = new Store();
@observer class App extends Component {
render() {
return (
<div className="App">
<button onClick={store.toggleSelector}>Toggle Selector</button>
{ store.showSelector ? <Rows store={store}/> : null }
</div>
);
}
}
export default App;
EDIT 제안에 따라 구성 요소 외부에서 저장소를 추출했습니다.
App의 렌더링에 새'store '를 만들지 마십시오. 대신 클래스 외부에서 생성하십시오. – Tholle
아무 것도 변경하지 않습니다. 그래도 제안에 감사드립니다. –