当前位置: 首页 > 知识库问答 >
问题:

React.js

佟云
2023-03-14

根据第页中的示例:https://redux.js.org/basics/usage-with-react

我们有以下项目:

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

Todo.propTypes = {
  onClick: PropTypes.func.isRequired,
  completed: PropTypes.bool.isRequired,
  text: PropTypes.string.isRequired
}

此外,我们还有:

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

有人能告诉我上面代码的{…todo}是什么吗?

我知道...运算符是一种传播语法,用于let say as[... todos, newTodoItem](将新的todo项目连接到旧的todos列表)。但是,在上面的例子中,todo项目不是一个数组,它似乎生成了一个对象。因此,对我来说,它看起来像{... todo}等于{todo}。

另外,在组件上分配了什么样的属性?

共有3个答案

陆承宣
2023-03-14
const obj = {a: 1, b: 2, c: 3};

<代码>

外部反应,如果const test={a:1,b:2},那么const x={test}//es6特性类似于const x={test:test}。这与constx={test:{a:1,b:2}}

其中,

function MyComponent(props) {
 // What is props.? to access obj
}

所以,你用一个有名字的道具,

<MyComponent x={obj} />

function MyComponent(props) {
 // props.x has obj
 // props.x = obj
 console.log(props.x);
 return <div />
}

但是,扩散运算符自动给出道具名称,对象键和值作为对象的值,如本答案开头所示。

正如您在问题中所说,const newTodos=[…todos,newItem]使用从todos展开的旧todo创建一个新数组,并添加一个额外的newItem。如果您没有传播todos,它将创建newTodos=[[todo1,todo2],newItem]

姬高扬
2023-03-14

... todo用于将道具传递给Todo组件。在Todo道具中,你可以看到有两个可变的道具。因此...操作员将其传播到Todo组件的道具

鲁华皓
2023-03-14

也可用于传播对象,而不仅仅是阵列。例如

// Using rest syntax here
let { x, y, ...z } = { x: 1, y: 2, a: 3, b: 4 }; 
x; // 1
y; // 2
z; // { a: 3, b: 4 }

// Using spread here
let n = { x, y, ...z };
n; // { x: 1, y: 2, a: 3, b: 4 }

在上面的情况下,todos是一个对象数组,其中包含键完成的文本。而不是像这样手动传递道具-

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

我们使用扩展语法添加键值对作为道具。你可以把它看作是句法上的糖。

 类似资料:
  • 问题内容: 我知道您可以在React类中指定样式,如下所示: 我是否应该以这种方式进行所有样式设置,并且在CSS文件中完全没有指定任何样式? 还是应该完全避免使用内联样式? 两者兼而有之,似乎很奇怪而且很乱-在调整样式时需要检查两个位置。 问题答案: 目前还没有很多“最佳实践”。我们中那些使用内联样式作为React组件的人仍在进行大量试验。 全部还是全部? 我们所称的“样式”实际上包括许多概念:

  • 本文向大家介绍同时引用这三个库react.js、react-dom.js和babel.js它们都有什么作用?相关面试题,主要包含被问及同时引用这三个库react.js、react-dom.js和babel.js它们都有什么作用?时的应答技巧和注意事项,需要的朋友参考一下 1、引入React核心库 2、支持React操作DOM 3、将jsx转为js

  • 问题内容: 我正在构建一个接受JSON数据源并创建可排序表的React组件。 每个动态数据行都有一个分配给它的唯一键,但是我仍然遇到以下错误: 数组中的每个子代都应具有唯一的“键”道具。 检查TableComponent的渲染方法。 我的渲染方法返回: 该组件是单行,并且还为其分配了唯一的键。 每个输入都是通过具有唯一键的组件构建的: 而看起来像这样: 是什么导致独特的按键道具错误? 问题答案:

  • 本文向大家介绍react.js使用webpack搭配环境的入门教程,包括了react.js使用webpack搭配环境的入门教程的使用技巧和注意事项,需要的朋友参考一下 本文介绍了react.js使用webpack搭配环境的入门教程,分享给大家,也给自己做个笔记 如果你想直接上手开发,而跳过这些搭配环境的繁琐过程,推荐你使用官方的create-react-app命令 现在打开 http://loca

  • 本文向大家介绍React.js中常用的ES6写法总结(推荐),包括了React.js中常用的ES6写法总结(推荐)的使用技巧和注意事项,需要的朋友参考一下 一 模块 1 引入模块以便使用 用import实现: 2 导出模块 用export default实现: 引用: 二 组件 1 定义组件 通过定义一个继承自React.Component的class来定义一个组件类: 2 定义组件方法 直接用名

  • 问题内容: 我已经在ES6中使用React.js构建了一个Web应用程序。我目前要创建一个基本的“联系我们”页面,并希望发送电子邮件。我是React的新手,只是发现我实际上不能使用React本身发送电子邮件。我正在使用,但在将示例代码与我的React文件集成时遇到了一些困难。具体来说,调用是可行的,但是我不知道如何将其链接到我的React前端。 Nodemailer:https://github.

  • 本文向大家介绍基于React.js实现原生js拖拽效果引发的思考,包括了基于React.js实现原生js拖拽效果引发的思考的使用技巧和注意事项,需要的朋友参考一下 一、起因&思路 一直想写一个原生js拖拽效果,又加上近来学react学得比较嗨。所以就用react来实现这个拖拽效果。 首先,其实拖拽效果的思路是很简单的。主要就是三个步骤: 1.onmousedown的时候,启动可拖拽事件,记录被拖拽

  • 本文向大家介绍React.js绑定this的5种方法(小结),包括了React.js绑定this的5种方法(小结)的使用技巧和注意事项,需要的朋友参考一下 this在javascript中已经相当灵活,把它放到React中给我们的选择就更加困惑了。下面一起来看看React this的5种绑定方法。 1.使用React.createClass 如果你使用的是React 15及以下的版本,你可能使用过