代码之家  ›  专栏  ›  技术社区  ›  Michael

在Redux React Native中使用reducer时导入/导出

  •  1
  • Michael  · 技术社区  · 7 年前

    我正在用React Native学习Redux,我有这样一个例子:


    减速机.js

    import {combineReducers} from "redux"; 
    import {HomeReducer as home} from "../routes/Home/modules/home";
    
    const makeRootReducer = () => {
        return combineReducers({
            home
        });
    };
    
    export default makeRootReducer;
    

    import {createStore, applyMiddleware, compose} from 'redux';
    import thunk from "redux-thunk";
    import {createLogger} from 'redux-logger';
    
    import makeRouteReducer from './reducer';
    
    const log = createLogger({diff: true, collapsed: true});
    
    export default (initialState = {}) => {
        const middleware = [thunk, log];
        const enhancers = [];
    
        return store = createStore(
            makeRouteReducer(),
            initialState,
            compose(
                applyMiddleware(...middleware),
                ...enhancers
            )
        );
    }
    

    它很好用,但我不明白我为什么要用它 export default 在里面

    当我尝试使用

    // reducer.js
    export makeRootReducer
    

    // createStore.js
    import {makeRouteReducer} from './reducer';
    

    请帮我详细解释一下。

    非常感谢你。

    1 回复  |  直到 7 年前
        1
  •  2
  •   SakoBu    7 年前

    你说的是 命名导出 默认导出 ...

    export const someFunction = () => {
       // some code here...
    }
    

    现在您可以将其导入另一个文件,如下所示:

    import {someFumnction} from './nameOfFile'
    

    但如果你这么做了:

    export default function someFunction () {
       // some code here...
    }
    

    这是默认的导出,您必须这样导入:

    import someFunction from './nameOfFile'
    

    在您的示例中,如果您更改以下内容:

    const makeRootReducer = () => {
        return combineReducers({
            home
        });
    };
    
    export default makeRootReducer;
    

    export const makeRootReducer = () => {
        return combineReducers({
            home
        });
    };
    

    import {makeRootReducer} from....
    

    希望能澄清。。。还有更多 info