观察者如何获得道具?
How do observers receive props?
我可以理解 TodoListView
如何在其观察者中接收 { todoList }
因为它的道具被
引用
render(<TodoListView todoList={store} />, document.getElementById("root"));
但我不明白 TodoView
如何在其观察者中接收 { todo }
因为它的 props 没有像 TodoListView
那样被引用
import * as React from "react";
import { render } from "react-dom";
import { observer } from "mobx-react-lite";
import Todo from "./Todo";
import TodoList from "./TodoList";
const TodoListView = observer(({ todoList }) => (
<div>
<ul>
{todoList.todos.map((todo) => (
<TodoView todo={todo} key={todo.id} />
))}
</ul>
Tasks left: {todoList.unfinishedTodoCount}
</div>
));
const TodoView = observer(({ todo }) => (
<li>
<input
type="checkbox"
checked={todo.finished}
onClick={() => todo.toggle()}
/>
{todo.title}
</li>
));
const store = new TodoList([
new Todo("Get Coffee"),
new Todo("Write simpler code")
]);
render(<TodoListView todoList={store} />, document.getElementById("root"));
TodoView
是如何得到 { todo }
的?
Codesandbox
从字面上看,当你映射它们时,你将每个待办事项作为 TodoView
的道具传递:
<ul>
{todoList.todos.map((todo) => (
// Right here `todo={todo}`
<TodoView todo={todo} key={todo.id} />
))}
</ul>
我可以理解 TodoListView
如何在其观察者中接收 { todoList }
因为它的道具被
render(<TodoListView todoList={store} />, document.getElementById("root"));
但我不明白 TodoView
如何在其观察者中接收 { todo }
因为它的 props 没有像 TodoListView
import * as React from "react";
import { render } from "react-dom";
import { observer } from "mobx-react-lite";
import Todo from "./Todo";
import TodoList from "./TodoList";
const TodoListView = observer(({ todoList }) => (
<div>
<ul>
{todoList.todos.map((todo) => (
<TodoView todo={todo} key={todo.id} />
))}
</ul>
Tasks left: {todoList.unfinishedTodoCount}
</div>
));
const TodoView = observer(({ todo }) => (
<li>
<input
type="checkbox"
checked={todo.finished}
onClick={() => todo.toggle()}
/>
{todo.title}
</li>
));
const store = new TodoList([
new Todo("Get Coffee"),
new Todo("Write simpler code")
]);
render(<TodoListView todoList={store} />, document.getElementById("root"));
TodoView
是如何得到 { todo }
的?
Codesandbox
从字面上看,当你映射它们时,你将每个待办事项作为 TodoView
的道具传递:
<ul>
{todoList.todos.map((todo) => (
// Right here `todo={todo}`
<TodoView todo={todo} key={todo.id} />
))}
</ul>