根据第页中的示例: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}。
另外,在组件上分配了什么样的属性?
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]
。
... todo用于将道具传递给Todo组件。在Todo道具中,你可以看到有两个可变的道具。因此...操作员将其传播到Todo组件的道具
…
也可用于传播对象,而不仅仅是阵列。例如
// 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及以下的版本,你可能使用过