ES6 将一些函数作为对象导入

Sri*_*kan 2 javascript node.js ecmascript-6 reactjs redux

动作.js

export const setX = () => {...}
export const setY = () => {...}
export const setT = () => {...}
Run Code Online (Sandbox Code Playgroud)

一些组件.js

import {setX, setY, setT} from 'actions'

export class somecomponent extends React.Component
{
   constructor(props,context)
   {
      super(props)
      this.state={
          X,
          Y,
          T
      }
   }


componentWillMount()
{
   let reduxstate = this.store.getState()
    Object.keys(this.state).forEach(n => {
      let fn = n + '-Changed';
      this[fn] = evt => {
        let update = {};
        update[n] = evt.target.value;
        this.setState(update);
        RETRIEVEDFUNCTION = ****//How to retrieve the imported actions setX,setY and setT by name****
        this.store.dispatch(RETRIEVEDFUNCTION(evt.target.value))
      }
      this.state[n] = reduxstate[n]
    });
}
Run Code Online (Sandbox Code Playgroud)

所有导入的函数都会在全局“窗口”中吗?我无法找到导入的函数来按名称访问它们

allimportedfunction['set'+n ](evt.target.value)
window['set'+n](evt.target.value)
Run Code Online (Sandbox Code Playgroud)

或者

有没有办法只将导入的函数添加到对象中

import {setX, setY, setT} as actionCreators from 'actions'
actionCreators['set'+n ](evt.target.value)
Run Code Online (Sandbox Code Playgroud)

import * as actionCreators from 'actions' -> 这有效,但我不想导入所有功能

SLa*_*aks 5

你不能那样做。

但是你可以把它们放在一个对象中:

import {setX, setY, setT} from 'actions'
const actionCreators = {setX, setY, setT};
Run Code Online (Sandbox Code Playgroud)


try*_*lly 5

MDN对所有形式的import语句都有很好的概述:

句法

import defaultMember from "module-name";
import * as name from "module-name";
import { member } from "module-name";
import { member as alias } from "module-name";
import { member1 , member2 } from "module-name";
import { member1 , member2 as alias2 , [...] } from "module-name";
import defaultMember, { member [ , [...] ] } from "module-name";
import defaultMember, * as name from "module-name";
import "module-name";
Run Code Online (Sandbox Code Playgroud)

所以,不,单独行动是不可能的import