Есть ли способ требовать в нескольких модулях в файл, который затем снова экспортируется как один модуль? - PullRequest
0 голосов
/ 03 мая 2018

В настоящее время работает с Redux, и ему было интересно, есть ли способ требовать в нескольких модулях одного файла, который затем снова экспортируется как один модуль?

Например, в моем actions/bookmark.js я группирую все действия, связанные с закладками, соответственно:

module.exports = {
  fetchBookmarkList: () => {
    return {
      type: 'FETCH_LIST'
    }
  },
  fetchBookmark: () => {
    return {
      type: 'FETCH_BOOKMARK'
    }
  }
}

Затем в моем файле actions/index.js я требую во всех группах действий (которые будут включать действия закладки, а также другие). Затем я хотел бы экспортировать весь файл как один модуль.

Схематически я имел в виду нечто подобное (очевидно, этот код не работает):

actions/index.js:

module.exports = {
  require('./bookmark');
  require('./tags');
}

Причина, по которой я хочу это сделать, заключается в том, что мне нужно импортировать только один файл действий, содержащий все мои действия (то есть файл actions/index.js):

Пример компонента:

import React, { Component } from 'react';
import { connect } from 'react-redux';
import * as actions from '../actions';

class BookmarkList extends Component {
  constructor(props) {
    super(props);
    this.props.fetchBookmarkList();
  }

  render() {
    return (
      <div></div>
    );
  }
}

export default connect(null, actions)(BookmarkList);

Ответы [ 2 ]

0 голосов
/ 03 мая 2018

Я бы НЕ рекомендовал передать все действия в mapDispatchToProps, только действия, необходимые для вашего компонента

Но вы можете просто использовать в actions/index.js:

Использование оператора распространения:

module.exports = {
  ...require('./bookmark');
  ...require('./tags');
} 

И в синтаксисе ES6:

actions/index.js:

export * from './bookmark'
export * from './tags'
0 голосов
/ 03 мая 2018

Я вижу, что у вас есть синтаксис модулей es6 в компонентах, почему бы не в ваших файлах с избыточностью?

export const fetchBookmarkList = () => {
  return {
    type: 'FETCH_LIST'
  }
};

export const fetchBookmark = () => {
  return {
    type: 'FETCH_BOOKMARK'
  }
}

На основании этой ссылки Я думаю, что можно было бы реэкспортировать все, как это:

export * from './bookmark'
export * from './tags;

Но не пробовал, и я могу ошибаться.

...