为什么使用了 react-router-redux 之后不断执行组件的render方法

发布于 2022-09-04 16:06:42 字数 1107 浏览 10 评论 0

class ActivityList extends Component {
        console.log('hello')
        return (<div></div>)
}

之后会在控制台不断的打印 hello

入口文件

const store = createStore()
const history = syncHistoryWithStore(hashHistory, store)

render(
    <Provider store={store}>
        <Router history={history}>
            <Route path="/" component={ActivityListContainer}>
                <IndexRoute component={ActivityListContainer} />
                <Route path="a" component={ActivityListContainer} />
                <Route path="b" component={ActivityListContainer} />
                <Route path="c" component={ActivityListContainer} />
                <Redirect from='*' to='/' />
            </Route>
        </Router>
    </Provider>,
    document.getElementById('root')
)

reducer

const rootReducer = combineReducers({
  payload:listReducer,
  optionStatus: optionAction,
  routing:routerReducer
})

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

半衾梦 2022-09-11 16:06:42

在 @eyesofkids 帮助下,这个问题已经解决,由于我在 组件return 之前 无条件的调用了 routerOption(location.pathname)方法,在这个方法里面会dispach(action) 所以每次进入render方法的时候都会去执行该方法, 所以会不断的发送 action 导致组件不断得更新。

一般情况下我们的包含了dispatch调用的方法是在 用户操作事件之后来调用的,例如在单击事件中调用,此时是不会无限的执行下去的,但是由于我这里牵扯到了首屏数据自动填充,这个动作是在用户操作之前完成的,所以必须要写到return之前,我整体是通过路由变化来控制的

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文