javascript - 对象传播符号如何转换 react redux Prop ?

标签 javascript reactjs components redux react-redux

查看 react-redux docs ,我对对象扩展符号如何将对象转换为 Prop 感到困惑。在下面的例子中:

const TodoList = ({ todos, onTodoClick }) => (
  <ul>
    {todos.map(todo =>
      <Todo
        key={todo.id}
        {...todo}
        onClick={() => onTodoClick(todo.id)}
      />
    )}
  </ul>
)

{...todo} 如何转换为在内部工作-

const Todo = ({ onClick, completed, text }) => (
  <li
    onClick={onClick}
    style={{
      textDecoration: completed ? 'line-through' : 'none'
    }}
  >
    {text}
  </li>
)

我知道 {...todo} 返回一个对象,该对象具有已完成的键、文本和 ID。但是如何提取它以适应 const Todo 函数呢?传入此函数的参数是否始终与从 TodoList 传入的 props 完全对应?

最佳答案

确切地说,考虑一下:

const MyParentComponent =  () => {
  const bar = { a: 'Hello', b: 'world' }

  return <MyChildComponent foo={ '!' } {...bar} />
}


const MyChildComponent = ({ a, b, foo }) => (
  <div>{ `${a} ${b}${foo}` }</div>
)

由于扩展符号,bar 的键(ab)被提取并作为 props 传递给子组件。

这与 rest parameters 不同:

const MyParentComponent =  () => (
  <MyChildComponent a={ 'Hello' } b={ 'world' } foo={ '!' } />
)


const MyChildComponent = ({ a, b, ...bar }) => ({
  <div>{ `${a} ${b}${bar.foo}` }</div>
})

请注意,在这种情况下,bar 是一个包含所有不是 destructured 的额外键的对象.

关于javascript - 对象传播符号如何转换 react redux Prop ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39030149/

相关文章:

javascript - 将导入的对象作为 Prop 从父级传递给子级与在这些子级中导入该对象的权衡是什么?

javascript - 如何使用 D3.js 访问 JSON 数据?

javascript - 在 iframe 的文档和/或 shadow-root 中注入(inject) html dom

javascript - Highcharts:y 轴标签丢失

Delphi在应用程序中获取 'Ctrl Tab'和 'Ctrl Shift Tab'

methods - Angular2 访问另一个组件方法而不使用 @ViewChild 加载其模板

javascript - 如何使 navigator.sendBeacon 使用 GET 方法

javascript - RCT链接管理器 : Listening to application urls in iOS

python - gRPC Web 服务器返回 "Method not found"

javascript - 在 React 中访问父组件的 onClick 方法