- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
所以我引入了 Material Design Lite 并尝试向页面添加一些组件。由于某种原因,所有组件 css 都被 user agent stylesheet
覆盖。我想我花了大约一个小时试图找出原因......
最后,在破解代码后,我将范围缩小到:
在输入任何路线之前,我会检查用户是否获得以下授权:
function isAuthorized(nextState, replace, callback) {
if (nextState.location.pathname === "/login") {
callback();
return;
}
const state = store.getState();
if (state.user && state.user.loggedIn === true) {
callback();
return;
}
retrieveUser((store.dispatch), (error) => {
if (!!error) {
replace("/login");
}
callback();
});
}
我的路由如下所示:
render(
<Provider store={store}>
<Router history={browserHistory}>
<Route path="/" component={Application} onEnter={(nextState, replace, callback) => isAuthorized(nextState, replace, callback)}>
<IndexRoute component={DashboardPage} />
<Route path="login" component={LoginPage} />
<Route path="dashboard" component={DashboardPage} />
<Route path="items" component={ItemPage} />
<Route path="item-categories" component={DashboardPage} />
<Route path="modifiers" component={DashboardPage} />
<Route path="taxes" component={DashboardPage} />
<Route path="discounts" component={DashboardPage} />
<Route path="orders" component={DashboardPage} />
<Route path="users" component={DashboardPage} />
<Redirect to="dashboard" from="*" />
</Route>
</Router>
</Provider>,
document.getElementById("application")
);
现在,如果我删除 onEnter
属性,例如:
<Route path="/" component={Application} onEnter={(nextState, replace, callback) => isAuthorized(nextState, replace, callback)}>
至
<Route path="/" component={Application}>
我一切都好。但我需要我的授权!
有人知道这是怎么回事吗?
猜测这会导致问题:
如果回调被列为第三个参数,则该 Hook 将异步运行,并且转换将阻塞,直到调用回调为止。
好的,更新为: <Route path="/" component={Application} onEnter={(nextState, replace) => isAuthorized(nextState, replace)}>
有了这个,我需要的样式/js 东西就可以工作了,但显然我们路由到路径而不检查用户是否被授权,因为回调不是循环的一部分......
<小时/>实际上,经过更多测试后,每当我更改路线时就会出现问题。
删除 onEnter 并继续开发后,我注意到每当我切换路由时,用户代理样式表就会成为新路由的王者。
最佳答案
这解决了它:
componentDidMount(){
componentHandler.upgradeDom();
}
花了 4 个小时。我已经尝试了几乎所有可以想象的事情......
我确实学到了很多关于react-router、react、material design、MUI、MDL等的知识。在阅读了muicss.com后,我实际上找到了根本原因:
https://www.muicss.com/docs/v1/css-js/boilerplate-html
为了使框架易于使用,MUI 使用 CSS3 功能来检测 MUI 组件何时添加到 DOM 并自动附加事件处理程序。以下是自动支持波纹效果的动态创建按钮的示例:
读完这篇文章后,我开始思考 MDL 如何将处理程序附加到 MDL 组件......做了更多阅读后,我偶然发现了 componentHandler.upgradeDom()
。
优雅?呃...我现在就接受它,但我肯定会进一步研究这一点,不喜欢在每次转换时升级 DOM...
关于javascript - CSS 和 JavaScript 通过 React-router 打破 onEnter,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39562984/
我有一个问题,我想在路由渲染中的组件之前分派(dispatch)我的 Action (isLoading),但是当我在 onEnter 事件中调用分派(dispatch)时,React 给出错误: “
我正在寻求有关我的 React Router onEnter 属性的帮助。似乎 onEnter 属性会在我的应用程序中的每个组件上触发,尽管我没有指定这一点。很确定这与我的路由器设置有关。 我的代码:
我有一个带有两个输入字段、一个文本和一个发送按钮的表单。我想通过 jQuery .ajax() 提交而不重新加载文档。只要单击按钮,它就会起作用,但当您按 return/enter 时,它就不起作用,
我正在使用 React Router onEnter 属性来处理身份验证,如下所示,也如 "auth-flow" example 中所示. function requireAuth(nextSt
我想使用 onEnter 回调进行提取,但我不知道如何读取 Route 组件中的 URL 参数。 我有这条路线 我想用bookId从路径作为 onBookLoad() 的函数参数.是否可以? 最佳答
当将redux-observable与react-router一起使用时,按照文档here中的说明异步添加新的史诗是否有意义?在路由更改期间,在react-router的onEnter钩子(Hook)
我正在构建一个基本的 react 登录应用程序,用于教育目的,并验证我正在使用 React-router 的 onEnter prop 功能的路线 import axios from 'axios';
我正在尝试将路由身份验证添加到我在 React 路由器上的 reactjs 应用程序,但是每当我将我创建的身份验证功能添加到特定路由上的 on enter 属性时,我都会收到以下错误。 未捕获的 Ra
我有一个使用redux-router的工作客户端应用程序。 我从我的 api 分派(dispatch) user 页面的初始状态。 我的路线文件: export default function ({
我正在切换到新版本的 ui-router (1.0.0-alpha.5) 并试图找出在哪里使用 onEnter 钩子(Hook)以及在哪里 onStart: $transitions.onStart(
我正在构建一个应用程序,我想在用户进入和离开路线的那一刻切换服务中的属性。为此,我需要了解 onEnter 中的州名。和 onExit钩子(Hook)。这对于 onExit 来说相对容易。钩子(Hoo
我正在玩弄 frida,特别是 iOS 上的 frida-trace。 当一个方法被 Hook 并且我可以在 onEnter 中记录参数时,有没有办法让这个函数调用提前结束而不调用原始方法? 我已经尝
感谢来自 SO 社区的一些大力帮助,我有一个使用 ui-router 使用多个状态/ View 的工作 Angular SPA。图书馆。但是,我的行为似乎与 angular-ui-router 不一致
我想使用react-router的onEnter钩子(Hook)在路由加载时检查我的redux存储中的变量。 根据文档,onEnter: ...receives the next router sta
我目前正在尝试构建一个简单的react-redux应用程序,该应用程序在后端包含学生和校园数据。 OnEnter曾经在这里工作,但它在新的react-router中不存在。 此应用程序尝试在开始时加载
好的,所以我有一个 url "/securepage"的状态,每当用户尝试访问它时我都需要检查它。所以我读到有一个我可以使用的 onEnter 函数。但我似乎无法从那里获得范围或服务。我究竟做错了什么
我正在开发一款游戏。并在我的游戏中使用音频。对于音频,我导入了 SimpleAudioEngine 框架。我在 onEnter 方法中设置音频,其他声明和编码在 init 方法中。在 onEnter
我有一个 Angular 应用程序,其 ui.router 模块有一个 onEnter 方法。我想在单击状态菜单项并且状态更改时调用函数。但现在我的应用程序无法正常工作。例如。我访问 app.com/
在 onEnter 钩子(Hook)的所有 React-router 示例中,该钩子(Hook)都是同步的。在问题中,建议保持这种方式。在钩子(Hook)内登录某人的惯用方法是什么? 用户故事: 客户
我正在开发一款游戏。并在我的游戏中使用音频。对于音频,我导入了 SimpleAudioEngine 框架。我在 onEnter 方法中设置音频,其他声明和编码在 init 方法中。在 onEnter
我是一名优秀的程序员,十分优秀!