如何使用Redux更新状态
How to update state using Redux?
我正在使用此入门套件https://github.com/davezuko/react-redux-starter-kit同时我也在学习一些教程,但这个代码库的风格比我正在观看的教程稍微高级/不同。我只是对一件事有点不知所措。
HomeView.js-这只是路由器中使用的一个视图,其他地方还有Root
等更高级别的组件,如果我告诉我的话,我认为我不需要分享,但都在上面提供的github链接中。
import React, { PropTypes } from 'react'
import { connect } from 'react-redux'
import { searchListing } from '../../redux/modules/search'
export class HomeView extends React.Component {
componentDidMount () {
console.log(this.props)
}
render () {
return (
<main onClick={this.props.searchListing}>
<NavBar search={this.props.search} />
<Hero/>
<FilterBar/>
<Listings/>
<Footer/>
</main>
)
}
}
我使用connect()
并传入mapStateToProps
来告诉HomeView
组件有关状态的信息。我还告诉它我的searchListing
函数,它是一个返回类型和有效负载的操作。
export const searchListing = (value) => {
console.log(value)
return {
type: SEARCH_LISTINGS,
payload: value
}
}
显然,当我调用connect()
内部的方法时,我正在传递一个空对象searchListing: () => searchListing({})
const mapStateToProps = (state) => {
return {
search: { city: state.search }
}
}
export default connect((mapStateToProps), { searchListing: () => searchListing({}) })(HomeView)
这就是我陷入困境的地方,我正试图从回购中获取模式,他们只是传递1
,我认为无论何时创建该操作,逻辑都只是添加1
,组件没有传递新的信息。
我试图完成的是将输入搜索输入到表单中,然后从组件将用户查询传递到操作负载,然后传递到reducer,然后用查询更新新状态。我希望这是正确的想法。
因此,如果在本例中,1
的value
被硬编码并传递到connect()
方法中,我如何使其从组件动态更新value
?这是正确的想法吗?
你几乎做对了。只需修改connect
函数,就可以直接传递要调用的操作:
const mapStateToProps = (state) => ({
search: { city: state.search }
});
export default connect((mapStateToProps), {
searchListing
})(HomeView);
然后可以将此操作与this.props.searchListing(stringToSearch)
一起使用,其中stringToSearch
是包含输入值的变量。
注意:您当前似乎没有检索到用户查询。您可能需要先检索它,然后将它传递给searchListing
操作。
如果需要调用函数方法,请使用dispatch
。
import { searchListing } from '../../redux/modules/search';
const mapDispatchToProps = (dispatch) => ({
searchListing: () => {
dispatch(searchListing());
}
});
export default connect(mapStateToProps, mapDispatchToProps)(HomeView);
然后,您已经将函数设置为道具,并将其与searchListing
一起使用。
- Web应用程序,将成员状态更新为其他成员
- Universal React/redux未在状态更新时呈现
- React.js组件中的状态更新在我的页面下留下了空白
- Ajax/Javascript用户状态更新
- 使用ReactJS使用Redux的简单状态更新事件
- Yii:TbCollapse 多链接(href = #collapse 并将状态更新为 be=“1”)
- 当 redux 状态更新时,在组件上调用 forceUpdate()
- 如何更改输入字段值,使其不会在每次更改时贯穿整个 Redux 状态更新周期
- 使用 Google 表格中列出的地址发送单件状态更新电子邮件
- 评论仅发布到最新的状态更新
- 强制 Twitter Epi 库发布状态更新,即使它是上一条推文的副本
- 使用Facebook javascript sdk获取最新的5个状态更新
- 正确处理多个连续状态更新
- 将状态更新到输入字段
- 如何在JavaScript中创建Twitter状态更新,并从中接收响应
- 如何从web url加载元数据,类似于facebook在状态更新时发布url的做法.
- Onkeyup或onkeypress javascript事件问题-密码状态更新
- WshShell运行不等待,但执行状态更新(运行vs执行问题)
- Web服务——异步执行和状态更新
- 点击后显示FB状态更新弹出窗口