2020/01/23
this.store명 = new 새로운스토어(this)
//각 스토어에 추가한다.
constructor(root) {
this.root = root;
}
this.root.counter.number
로 접근하면 된다.const { number } = this.root.counter;
@observer
class MyComponent extends Component {
render() {
const { todos, user } = this.props;
return (
<div>
{user.name}
<ul>
{todos.map(todo => (
<TodoView todo={todo} key={todo.id} />
))}
</ul>
</div>
);
}
}
// 비효율적인 코드
// user.name이 바뀔때도 component가 리랜더링 되기 때문
// 리스트를 따로 분리시키는 것이 좋다.
@observer class MyComponent extends Component {
render() {
const {todos, user} = this.props;
return (<div>
{user.name}
<TodosView todos={todos} />
</div>)
}
}
@observer class TodosView extends Component {
render() {
const {todos} = this.props;
return <ul>
{todos.map(todo => <TodoView todo={todo} key={todo.id} />)}
</ul>)
}
}
const itemList = items.map(item => (
<BasketItem
name={item.name}
price={item.price}
count={item.count}
key={item.name}
onTake={onTake}
/>
));
// item에서 name, price, count를 조회하는 것이 세부참조
const itemList = items.map(item => (
<BasketItem item={item} key={item.name} onTake={onTake} />
));
render() {
return <MyWidget onClick={() => { alert('hi') }} />
}
// 좋지 않은 코드
render() {
return <MyWidget onClick={this.handleClick} />
}
handleClick = () => {
alert('hi')
}