Redux 简单路由器 pushPath 未更新 URL
Redux Simple Router pushPath not updating URL
我将 redux-simple-router 移植到样板 react/redux 同构套件 (https://github.com/erikras/react-redux-universal-hot-example) 中。我有一个简单的点击事件处理程序,它从 redux-simple-router 调用 'pushPath'。但是,pushPath 似乎没有更新我的 URL。我已经实现了初始端口 (syncReduxAndRouter),其他路由似乎工作正常(其他路由使用 updatePath)。我还需要做些什么才能让它工作吗?
import React, {Component} from 'react';
import { pushPath } from 'redux-simple-router';
import {connect} from 'react-redux';
@connect(null,
{ pushPath })
export default class MyContainer extends Component {
constructor() {
super();
this.state = { links: [{key: 0, name: 'Link1'}, {key: 1, name: 'Link2'}, {key: 2, name: 'Link3'}] };
}
// pass in redux actions as props
handleClick(value) {
pushPath('/Links/' + value);
}
render() {
return (
<div className="container">
<div>Search bar here</div>
<div className={styles.tile_container}>
Tiles here
{this.state.links.map(source =>
<div name={link.name} key={link.key} className={styles.source_tile} onClick= {this.handleClick.bind(this, link.name)}>{link.name}</div>
)}
</div>
</div>
);
}
}
这是修复后的代码版本。我需要使用连接到商店的 redux-simple-router 实例,然后将其方法作为道具传递给组件。
import React, {Component, PropTypes} from 'react';
import { pushPath } from 'redux-simple-router';
import {connect} from 'react-redux';
@connect(null,
{ pushPath })
export default class MyComponent extends Component {
static propTypes = {
pushPath: PropTypes.func.isRequired
};
constructor() {
super();
this.state = { links: [{key: 0, name: 'Link1'}, {key: 1, name: 'Link2'}, {key: 2, name: 'Link3'}] };
}
// pass in redux actions as props
handleClick(value) {
this.props.pushPath('/Links/' + value);
}
render() {
return (
<div className="container">
<div>Search bar here</div>
<div className={styles.tile_container}>
Tiles here
{this.state.links.map(source =>
<div name={link.name} key={link.key} className={styles.source_tile} onClick= {this.handleClick.bind(this, link.name)}>{link.name}</div>
)}
</div>
</div>
);
}
}
您正在调用动作创建器 pushPath
而不是绑定方法。
动作创建者只是 returns 普通对象。要调用绑定方法,你应该做
handleClick(value) {
this.props.pushValue('/Links/' + value);
}
@connect
创建适当的调度方法并通过道具传播给您。
我将 redux-simple-router 移植到样板 react/redux 同构套件 (https://github.com/erikras/react-redux-universal-hot-example) 中。我有一个简单的点击事件处理程序,它从 redux-simple-router 调用 'pushPath'。但是,pushPath 似乎没有更新我的 URL。我已经实现了初始端口 (syncReduxAndRouter),其他路由似乎工作正常(其他路由使用 updatePath)。我还需要做些什么才能让它工作吗?
import React, {Component} from 'react';
import { pushPath } from 'redux-simple-router';
import {connect} from 'react-redux';
@connect(null,
{ pushPath })
export default class MyContainer extends Component {
constructor() {
super();
this.state = { links: [{key: 0, name: 'Link1'}, {key: 1, name: 'Link2'}, {key: 2, name: 'Link3'}] };
}
// pass in redux actions as props
handleClick(value) {
pushPath('/Links/' + value);
}
render() {
return (
<div className="container">
<div>Search bar here</div>
<div className={styles.tile_container}>
Tiles here
{this.state.links.map(source =>
<div name={link.name} key={link.key} className={styles.source_tile} onClick= {this.handleClick.bind(this, link.name)}>{link.name}</div>
)}
</div>
</div>
);
}
}
这是修复后的代码版本。我需要使用连接到商店的 redux-simple-router 实例,然后将其方法作为道具传递给组件。
import React, {Component, PropTypes} from 'react';
import { pushPath } from 'redux-simple-router';
import {connect} from 'react-redux';
@connect(null,
{ pushPath })
export default class MyComponent extends Component {
static propTypes = {
pushPath: PropTypes.func.isRequired
};
constructor() {
super();
this.state = { links: [{key: 0, name: 'Link1'}, {key: 1, name: 'Link2'}, {key: 2, name: 'Link3'}] };
}
// pass in redux actions as props
handleClick(value) {
this.props.pushPath('/Links/' + value);
}
render() {
return (
<div className="container">
<div>Search bar here</div>
<div className={styles.tile_container}>
Tiles here
{this.state.links.map(source =>
<div name={link.name} key={link.key} className={styles.source_tile} onClick= {this.handleClick.bind(this, link.name)}>{link.name}</div>
)}
</div>
</div>
);
}
}
您正在调用动作创建器 pushPath
而不是绑定方法。
动作创建者只是 returns 普通对象。要调用绑定方法,你应该做
handleClick(value) {
this.props.pushValue('/Links/' + value);
}
@connect
创建适当的调度方法并通过道具传播给您。