我正在阅读Redux库的文档,其中包含以下示例:
除了读取状态之外,容器组件还可以调度动作。以类似的方式,您可以定义一个名为的函数
mapDispatchToProps()
,该函数接收该dispatch()
方法并返回要注入到演示组件中的回调道具。
这实际上是没有意义的。为什么现在mapDispatchToProps
已经有需要mapStateToProps
?
他们还提供了以下方便的代码示例:
const mapDispatchToProps = (dispatch) => {
return {
onTodoClick: (id) => {
dispatch(toggleTodo(id))
}
}
}
有人可以用外行的术语解释一下此功能是什么以及为什么有用吗?
我觉得没有一个答案明确了为什么mapDispatchToProps
有用。
这实际上只能在container- component
模式的上下文中得到回答,我首先阅读以下内容对它有最好的理解:容器组件,然后与React结合使用。
简而言之,您components
应该只关心显示内容。 他们应该从中获取信息 的 唯一地方是他们的道具 。
与“显示内容”(组件)分开的是:
那是containers
为了什么。
因此,模式中的“精心设计” component
如下所示:
class FancyAlerter extends Component {
sendAlert = () => {
this.props.sendTheAlert()
}
render() {
<div>
<h1>Today's Fancy Alert is {this.props.fancyInfo}</h1>
<Button onClick={sendAlert}/>
</div>
}
}
查看此组件如何从props(来自redux存储,通过mapStateToProps
)获取它显示的信息,以及如何从props:获取其action函数sendTheAlert()
。
那是mapDispatchToProps
进来的:在对应的container
// FancyButtonContainer.js
function mapDispatchToProps(dispatch) {
return({
sendTheAlert: () => {dispatch(ALERT_ACTION)}
})
}
function mapStateToProps(state) {
return({fancyInfo: "Fancy this:" + state.currentFunnyString})
}
export const FancyButtonContainer = connect(
mapStateToProps, mapDispatchToProps)(
FancyAlerter
)
我不知道你可以看到,现在它的container
1 ,它知道Redux的调度和存储以及州和......东西。
component
模式中的in进行FancyAlerter
渲染不需要了解任何东西:它onClick
通过其props 获取其在按钮处调用的方法。
并且… mapDispatchToProps
是redux提供的有用手段,它可以使容器轻松地将该函数传递给其props上的包装组件。
所有这些看起来都非常像docs中的todo示例,还有另一个答案,但是我试图根据模式来强调它 为什么 。
(注意:您不能mapStateToProps
出于mapDispatchToProps
无法访问dispatch
内部的基本原因而使用同一目的mapStateToProp
。因此,您不能使用mapStateToProps
来为包装的组件提供使用的方法dispatch
。
我不知道他们为什么选择将其分为两个映射功能-IE可以mapToProps(state, dispatch, props)
同时使用这两个功能可能更简单!
1
请注意,我故意将容器明确命名为FancyButtonContainer
,以强调它是“事物”- 容器的“物”的身份(因此存在!)有时会在速记中丢失
export default connect(...)
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
大多数示例中显示的语法
问题内容: 什么是selenium? 当您打开Selenium的官方页面时,您首先读到的是“什么是Selenium?”中的“ Selenium automates browser”。部分。“selenium的哪个部分适合我?”部分 下面提供了Selenium WebDriver和Selenium IDE之间的选择。由此,我推断出Selenium是一组工具,并且该集合包括IDE,WebDriver
硒是什么? 当你打开Selenium的官方页面,首先看到的是“什么是Selenium”中的“Selenium自动浏览器”。节。“硒的哪一部分对我合适?”下面提供了Selenium WebDriver和Selenium IDE之间的选择。由此,我推断Selenium是一个工具集合,该集合包括IDE、WebDriver API(语言绑定)、网格、Selenium独立服务器、浏览器驱动程序。一个人必须下
我正在阅读Redux库的文档,它有以下示例: 除了读取状态,容器组件还可以调度操作。以类似的方式,您可以定义一个名为的函数,该函数接收方法并返回要注入到表示组件中的回调道具。 这实际上毫无意义。既然已经有了,为什么还需要? 它们还提供了以下方便的代码示例: 这个函数是什么?它为什么有用?
本文向大家介绍什么是事务?什么是锁?相关面试题,主要包含被问及什么是事务?什么是锁?时的应答技巧和注意事项,需要的朋友参考一下 答:事务就是被绑定在一起作为一个逻辑工作单元的SQL语句分组,如果任何一个语句操作失败那么整个操作就被失败,以后操作就会回滚到操作前状态,或者是上有个节点。为了确保要么执行,要么不执行,就可以使用事务。要将有组语句作为事务考虑,就需要通过ACID测试,即原子性,一致性,隔
我在这里读到 写入共享引用类型<代码> 理解<代码> 在另一个地方,我阅读了以下代码: 结构人中的a是什么 名称的含义是什么: 如果想避免使用
我几天前听说了Docker的事,想过去看看。 但事实上,我不知道这个“容器”的用途是什么? 什么是容器? 它能取代一个专门用于开发的虚拟机吗? 简单地说,在公司中使用Docker的目的是什么?主要的优势?