Как установить CSS для react-redux-toastr

#javascript #css #reactjs #redux #react-redux

#javascript #css #reactjs #redux #react-redux

Вопрос:

Я пытался использовать react-redux-toastr для уведомлений, но я не могу заставить CSS загружаться должным образом. Я использую webpack для связки, в LoginForm.js том LoginForm.css , что загружается правильно и вступает в силу (оттуда появляется зеленый фон), react-redux-toastr.min.css for react-redux-toastr не работает. Я попытался включить его в файл, в котором запускается тостер, и в корень, но ни один из них не помог. Поскольку webpack он компилируется, он должен удовлетворять всем import -s.

Пожалуйста, помогите мне отладить и исправить эту проблему.

Нет CSS

appClient.js

 ...
import RootReducer from './reducers/flightControlApp';
import './components/style/react-redux-toastr.min.css';
import ReduxToastr from 'react-redux-toastr';

...

let store = compose(applyMiddleware(...middlewares)) (createStore) (
    RootReducer,
    persistedState
);

...

window.onload = () => 
{
    ReactDOM.render(
        <MuiThemeProvider muiTheme={getMuiTheme()}>
            <Provider store={ store }>
                <div>
                    <ReduxToastr
                            timeOut={15000}
                            newestOnTop={false}
                            preventDuplicates
                            position="top-left"
                            transitionIn="fadeIn"
                            transitionOut="fadeOut"
                            progressBar
                            closeOnToastrClick/>
                    <AppRoutes />
                </div>
            </Provider>
        </MuiThemeProvider>,
        document.getElementById('app'));
}
  

./reducers/flightControlApp.js

 import { combineReducers } from 'redux';
import UserReducer from './userReducer';
import UserStatsReducer from './userStatsReducer';
import {reducer as toastrReducer} from 'react-redux-toastr'

let rootReducer = combineReducers({
    userState: UserReducer,
    statsState: UserStatsReducer,
    toastr: toastrReducer
})

export default rootReducer;
  

LoginForm.js

 import React from 'react';
import { Redirect } from 'react-router-dom';
import PropTypes from 'prop-types';
import './style/LoginForm.css';
import { toastr } from 'react-redux-toastr';
import { PulseLoader } from 'react-spinners';
import { assert } from 'chai';

class LoginForm extends React.Component{

    componentDidUpdate() {
        if (this.props.isLoginError)
        {
            toastr.error('Error:', 'Login failed', {
                onShowComplete: this.props.onResetLoginCallback,
                onToastrClick: this.props.onResetLoginCallback
            });
        }
    }

 render() {
   ...
  }
 }
  

Комментарии:

1. попробуйте добавить это в свой index.html файл: <link href="https://diegoddox.github.io/react-redux-toastr/7.1/react-redux-toastr.min.css" rel="stylesheet" type="text/css">

2. Я предлагаю проверить notistack , я пошел по тому же пути, что и вы, выбирая систему toast, и в итоге выбрал ее вместо toastr.

Ответ №1:

Поскольку вы используете пакет npm react-redux-toastr , файл CSS / Sass также доступен для использования. Основывайтесь на документации и вашей кодовой базе.

appClient.js

 import RootReducer from './reducers/flightControlApp';
import 'react-redux-toastr/lib/css/react-redux-toastr.min.css'; // it's coming from node_modules
// instead of import './components/style/react-redux-toastr.min.css';
import ReduxToastr from 'react-redux-toastr';
  

или импортируйте его в основной CSS, если он у вас есть;

appclient.css или appclient.scss

 @import 'react-redux-toastr/src/styles/index'; // string import
@import url('react-redux-toastr/src/styles/index') // or url import
  

проверьте правила импорта в css. Я использовал react-redux-toastr 7.6.4 .

И плагин Webpack CSS.

 // module import section

const ExtractTextPlugin = require('extract-text-webpack-plugin');

const extractTextPlugin = new ExtractTextPlugin('./css/styles.css');

// Webpack css plugin configurations
module: {
    rules: [{
      test: /.s?css$/,
      use: ExtractTextPlugin.extract({
      fallback: 'style-loader',
      use: [
              {
               loader: 'css-loader',
             },
             {
               loader: 'sass-loader',
             },
           ],
      }),
   },
]},
plugins: [extractTextPlugin]