假设我有一个链接,当单击该链接时,会向我的状态对象中名为 的数组添加一个随机数queue。整个 state.queue 数组显示在我的页面上,并在我们单击链接时更新。我目前有一个应该做类似事情的链接,但是在我的减速器更改状态(向数组中添加一个新项目)之后,我的页面没有(重新?)渲染我的组件,因此页面不会更新.
我应该怎么做才能在我的页面上显示整个 state.queue,包括在我单击链接时动态更新?这是我所拥有的:
频道.js
class Channel extends Component {
constructor(props) {
super(props);
this.state = {
queue: [],
// more initializations
};
...
}
...
render() {
return (
<div>
{/*This part is never called because this.state.queue never has anything in it! */}
{this.state.queue &&
this.state.queue.length > 0 &&
<div>
<ul>
{this.state.queue.map((queuedItem, i) =>
<li key={i}>{queuedItem}</li>
)}
</ul>
</div>}
<div>
<QResults
allQueryResults={this.state.queryState}
requestHandler={queueNewRequest}
/>
</div>
</div>
);
}
}
function mapStateToProps(state) {
const{queue} = state
return {queue}
}
function mapDispatchToProps(dispatch) {
return ({
queueNewRequest: (newRequestData) => { dispatch({type: newRequestData}) }
})
}
export default withRouter(connect(mapStateToProps , mapDispatchToProps )(Channel))
QResults.js
export default class QResults extends Component {
render() {
const {requestHandler} = this.props
return (
<ul>
{this.props.allQueryResults.items.map((trackAlbum, i) =>
<li key={i}>
<a href='#'
onClick={
() => requestHandler(trackAlbum.name)}>
Some link
</a>
</li>
)}
</ul>
)
}
}
翻过高山走不出你
蝴蝶刀刀
相关分类