【发布时间】:2018-05-11 19:57:03
【问题描述】:
使用 react router 2,单击“链接”组件将触发组件的重新渲染。
我正在将我的项目转换为响应路由器 4,使用“NavLink”而不是“Link”。除此以外,一切正常:单击“NavLink”不会重新呈现我的组件(更新我的待办事项列表),它只会更改链接。
有什么我应该在某处添加的东西来完成这项工作吗?与 react router 2 "Link" 一起工作得很好。
这里是示例代码:
App.js:
const App = ({ match: { params } }) => {
return (
<div>
<AddTodo />
<VisibleTodoList filter={params.filter || 'all'} />
<Footer />
</div>
)
}
页脚.js:
const Footer = () => (
<p>
Show:
{" "}
<FilterLink filter="all">
All
</FilterLink>
{", "}
<FilterLink filter="active">
Active
</FilterLink>
{", "}
<FilterLink filter="completed">
Completed
</FilterLink>
</p>
);
Filterlink.js:
const FilterLink = ({ filter, children }) => {
return (
<NavLink
exact
to={filter === "all" ? "/" : `/${filter}`}
activeStyle={{ textDecoration: "none", color: "red" }}
>
{children}
</NavLink>
);
};
VisibleTodoList.js:
const mapStateToProps = (state, ownProps) => {
return {
todos: getVisibleTodos(
state.todos,
ownProps.filter
),
};
};
const mapDispatchToProps = (dispatch) => ({
onTodoClick(id) {
dispatch(toggleTodo(id))
},
});
const VisibleTodoList = connect(
mapStateToProps,
mapDispatchToProps
)(TodoList);
【问题讨论】:
标签: reactjs react-router react-router-v4