- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
有一个从登录屏幕到仪表板的应用程序,其中包含另外两个页面:客户和元素。当我加载这些屏幕时,它工作正常,但是当我返回浏览器或单击浏览器上的刷新时,css 丢失了。这是我的代码:非常感谢任何帮助。
1) App.js
import React, {Component} from 'react';
import Login from './js/components/login/Login.js';
import Dashboard from './js/components/dashboard/Dashboard.js';
import {BrowserRouter as Router, Route, Switch, withRouter} from 'react-router-dom';
import store from './js/config/store'
import { Provider } from 'react-redux'
import PrivateRoute from './common/PrivateRoute';
import { getCurrentUser } from './util/APIUtils';
import { Layout, notification } from 'antd';
import { ACCESS_TOKEN } from './index';
//Private Route
import Projects from "./js/components/projects/Projects.js";
//Public Route
import Customers from "./js/components/customers/Customers.js";
const { Content } = Layout;
class App extends Component {
constructor(props) {
super(props);
this.state = {
currentUser: null,
isAuthenticated: true,
isLoading: false
}
// this.handleLogout = this.handleLogout.bind(this);
this.loadCurrentUser = this.loadCurrentUser.bind(this);
//this.handleLogin = this.handleLogin.bind(this);
notification.config({
placement: 'topRight',
top: 70,
duration: 3,
});
}
loadCurrentUser() {
this.setState({
isLoading: true
});
getCurrentUser()
.then(response => {
this.setState({
currentUser: response,
isAuthenticated: true,
isLoading: false
});
}).catch(error => {
this.setState({
isLoading: false
});
});
}
componentDidMount() {
this.loadCurrentUser();
}
render() {
return (
<Provider store={store}>
<Router>
<Switch>
<Route exact path="/"
render={(props) => <Login isAuthenticated={this.state.isAuthenticated}
currentUser={this.state.currentUser} handleLogout={this.handleLogout} {...props} />}>
</Route>
<Route path="/login"
render={(props) => <Login onLogin={this.handleLogin} {...props} />}></Route>
<PrivateRoute authenticated={this.state.isAuthenticated} path="/projects" component={Projects}></PrivateRoute>
<PrivateRoute authenticated={this.state.isAuthenticated} path="/customers" component={Customers}></PrivateRoute>
<PrivateRoute authenticated={this.state.isAuthenticated} path="/dashboard" component={Dashboard}></PrivateRoute>
</Switch>
</Router>
</Provider>
)
}
}
export default App
2) 仪表板.js
import React, { Component } from 'react';
import PropTypes from 'prop-types';
import { connect } from 'react-redux';
import { fetchProjects } from "../../actions/ProjectActions";
import '../../../css/main.css';
import {
Route,
NavLink,
BrowserRouter as Router,
Redirect,
withRouter
} from "react-router-dom";
//Private Route
import Projects from "../projects/Projects.js";
//Public Route
import Customers from "../customers/Customers.js";
class Dashboard extends Component {
render() {
return (
<Router>
<div>
<h1>Reporting Tool</h1>
<ul className="header">
<li><NavLink to="/projects">Projects</NavLink></li>
<li><NavLink to="/customers">Customers</NavLink></li>
</ul>
<div className="content">
<Route path="/projects" component={Projects}/>
<Route path="/Customers" component={Customers}/>
</div>
</div>
</Router>
);
}
}
export default Dashboard;
3)CSS
@import url('https://fonts.googleapis.com/css?family=Roboto:300,400,500');
* {
box-sizing: border-box;
padding: 0;
margin: 0;
}
h1, h2, h3, h4 ,h5, h6, p, ui, li{
font-weight: 400;
}
/*Dashboard*/
ul.header li {
display: inline;
list-style-type: none;
margin: 0;
}
ul.header {
background-color: #111;
padding: 0;
}
ul.header li a {
color: #FFF;
font-weight: bold;
text-decoration: none;
padding: 20px;
display: inline-block;
}
.content {
background-color: #FFF;
padding: 20px;
}
.content h2 {
padding: 0;
margin: 0;
}
.content li {
margin-bottom: 10px;
}
a {
text-decoration: none;
outline: none;
}
ul {
list-style: none;
}
body {
font-family: 'Roboto', sans-serif;
font-weight: 300;
color: #323531;
-webkit-font-smoothing: antialiased;
}
/* Login */
.wrapper {
display: flex;
flex-direction: row;
height: 100vh;
}
.wrapper .right {
flex: 3;
}
.wrapper .left {
display: flex;
flex-direction: column;
flex: 1;
align-items: center;
justify-content: center;
height: 100vh;
box-shadow: 2px 0 5px 0 rgba(43,40,43,0.3);
z-index: 1;
}
.left .login {
display: flex;
flex-direction: column;
justify-content: center;
align-items: center;
width: 80%;
padding-bottom: 1rem;
}
.left .login .logo {
display: flex;
flex-direction: row;
align-items: center;
width: 100%;
padding-left: 1rem;
}
.left .login .logo img {
width: 100px;
}
.left .login .logo h1 {
font-size: 1.5rem;
}
.left .login label {
font-size: 0.9rem;
line-height: 2rem;
font-weight: 400;
}
.left .login form {
width: 80%;
padding-bottom: 2rem;
}
.login .text-input {
margin-bottom: 1.5rem;
width: 100%;
border-radius: 3px;
background: transparent;
border: 1px solid #4D52694D;
padding: 0.5rem 1rem;
line-height: 1.3rem;
}
.login .error-message {
display: none;
font-weight: 400;
color: #ED5565;
}
.login .error-message.show {
display: flex;
align-items: center;
justify-content: center;
width: 80%;
}
.login .form-actions {
display: flex;
flex-direction: row;
align-items: center;
justify-content: space-between;
}
.login .form-actions a {
color: #4D5269;
text-decoration: none;
text-align: center;
font-size: 0.9rem;
}
.login .or, .links {
width: 80%;
}
.secondary-btn {
width: 60%;
}
.login .links a {
display: block;
text-decoration: none;
text-align: center;
font-size: 0.9rem;
margin-bottom: 1rem;
}
.login .or {
display: flex;
flex-direction: row;
margin-bottom: 1.5rem;
align-items: center;
}
.login .or .bar {
flex: auto;
border: none;
height: 1px;
background: #4D52694D;
}
.login .or span {
color: #4D5269;
padding: 0 0.9rem;
}
.right .banner-showcase {
display: flex;
justify-content: center;
background: url('../image/banner-big.jpg') no-repeat center center / cover;
height: 100vh;
text-align: center;
}
.right .banner-showcase h1 {
font-size: 3rem;
width: 100%;
color: #fff;
padding-top: 2vh;
}
.login-footer {
text-align: center;
font-size: 0.8rem;
width: 80%;
padding-top: 3rem;
}
/* Buttons */
.primary-btn {
padding: 0.7rem 1rem;
height: 2.5rem;
display: block;
border: 1px solid #977ED9;
border-radius: 3px;
font-weight: 300;
background: transparent;
color: #977ED9;
text-decoration: none;
cursor: pointer;
text-align: center;
transition: all 0.5s;
}
.secondary-btn {
padding: 0.5rem 1rem;
font-size: 0.9rem;
height: 2.5rem;
display: block;
border: 1px solid #977ED9;
border-radius: 3px;
font-weight: 300;
background: transparent;
color: #977ED9;
text-decoration: none;
cursor: pointer;
text-align: center;
transition: all 0.5s;
}
/* React progress button */
.pb-container {
width: 100%;
}
.pb-container .pb-button {
background: transparent;
border: 1px solid #977ED9;
border-radius: 3px;
padding: 0.7em 1em;
height: 2.5rem;
width: 100%;
}
.pb-container .pb-button span {
font-size: 0.9rem;
color: #977ED9;
font-weight: 300;
}
.pb-container .pb-button svg {
height: 2.5rem;
width: 2.5rem;
}
.pb-container.loading .pb-button {
width: 2.5rem;
border-radius: 27px;
color: #977ED9;
}
.pb-container.error .pb-button {
border-color: #ED5565;
background-color: #ED5565;
}
.pb-container.success .pb-button {
border-color: #A0D468;
background-color: #A0D468;
}
最佳答案
由于您的 main.css 是一个全局样式表,您可以将其添加到您的 index.html 而不是尝试将其导入 JS
如果您使用了 Create React App 或类似的东西,您的 index.html 文件可能会位于 /public
中文件夹。
您可以将 main.css 文件复制到该公共(public)文件夹,然后将其添加到 <head>
像这样的标签:
<head>
<link rel="stylesheet" href="main.css">
</head>
关于javascript - 在 React 应用程序中按下刷新或后退按钮时 CSS 丢失,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54764261/
我们知道,当使用 hibernate 对数据库进行批量更新时(即使在 HQL 中),所做的更改不会复制到存储在当前 session 中的实体。 所以我可以调用 session.refresh 来加载对
我正在做一个项目,所有的东西都保存在事件中,所以服务器需要一些时间来响应新数据。我正在使用 Fluent 等待使用 ajax 的页面,但是这个不使用任何 ajax。所以我想刷新页面检查是否有新项目,如
我有一个从 Vector 创建的 JTable。 如何刷新 JTable 以显示添加到 Vector 的新数据? 最佳答案 当 TableModel 发生更改时,您的 JTable 应该会自动更新。我
有没有办法使用下面的代码来刷新已经存在的 div id,而不是刷新时间? window.onload = startInterval; function startInterval() {
我更新了在 Shiny Server 上运行的 Shiny 应用程序使用的 DataSet.RData。但是, Shiny 的应用程序仍在旧数据上运行。我已通过浏览器历史记录清除并重新启动浏览器几次,
我的应用程序中有一个无限滚动的网格面板(ExtJs 4.2.1),类似于 this example .用户可以单击刷新按钮,然后必须使用数据库中的数据更新网格的行。我在刷新按钮处理程序中调用 stor
我不知道这三种方法中哪一种最适合我。他们都为我工作。有谁知道刷新、更新和重画之间的区别吗? 最佳答案 根据在线文档: Refresh - 重新绘制屏幕上的控件。 Call Refresh method
有什么办法吗 ICollectionView.Refresh() 或者 CollectionViewSource.GetDefaultView(args.NewValue).Refresh(); 在
这个问题已经有答案了: Updating address bar with new URL without hash or reloading the page [duplicate] (4 个回答)
我有一个 javascript 设置超时以在 10 秒后关闭 div,并且我想在 div 关闭时添加页面刷新。我正在使用的代码如下。 var container_close_sec = "1
我有一组具有以下名称的页面.... update1.php update2.php update3.php update4.php update5.php update6.php update7.ph
如果是则触发js函数。我可以使一个复选框保持选中状态,并在页面刷新时检查值并选中“checked”,并提交以下内容... checked="checked" /> 你都不记得触发js函数。 这是我的
我正在尝试刷新 php 脚本以在数据库更新时显示更新的内容。我首先构建了我的 php,然后刷新代码,然后合并它们。但是,脚本不会更新。有谁知道为什么吗? $(document).ready
当我要删除的节点扩展集合类型时,Grails中有一个错误阻止我使用removeFrom *。直接从关联中删除节点不会更新二级缓存。 A hasMany B 有什么方法可以使关联缓存手动无效或强制重新加
我正在使用 hibernate 和 mysql 来抽象一个数据库,以便在 java 驱动的网站中使用。我使用 hibernate 很好地解决了所有查询,但似乎无法弄清楚如何使用它进行更新、插入和删除,
如何通过调用 oncreateview 方法重新创建 fragment ?我有一个 fragment ,用于通过表单插入新数据,单击按钮后,我想通过删除在 EditText 中输入的数据来重新创建 f
当我从一个到另一个时,我试图刷新我的观点。我知道我应该将刷新代码放在 viewWillAppear 中,但我不知道该放什么代码。 你们能帮帮我吗? 谢谢! 最佳答案 在您看来,请调用 setNeeds
我正在开发 iPhone 应用程序并希望使用: CFStreamCreatePairWithSocketToHost(NULL, url, port, &serverReadStream, &serv
看到我已经创建了一个用于登录用户的脚本。而且我还添加了设置选项卡,以便用户可以编辑他们的设置!但是当我尝试它时,mysql 表中的数据发生了变化,但配置文件中显示的用户名和用户电子邮件保持不变!当我注
好的。这就是它的样子。 当我启动应用程序时,我从服务器收到的第一件事是数据: {name: "test", type: "checkbox" checked: true, } 这使得其中一个复选框
我是一名优秀的程序员,十分优秀!