[英]ES6 Import some functions as a object
actions.js
export const setX = () => {...}
export const setY = () => {...}
export const setT = () => {...}
somecomponent.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]
});
}
是否所有导入的功能都在全局“窗口”中。 我找不到导入的函数来按名称访问它们
allimportedfunction['set'+n ](evt.target.value)
window['set'+n](evt.target.value)
要么
有没有办法只将导入的功能添加到对象
import {setX, setY, setT} as actionCreators from 'actions'
actionCreators['set'+n ](evt.target.value)
从'actions'-> import * as actionCreators->可行,但是我不想导入所有功能
你不能那样做。
但是您可以将它们放在一个对象中:
import {setX, setY, setT} from 'actions'
const actionCreators = {setX, setY, setT};
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";
因此,不,仅凭import
是不可能的。
如果您可以打开webpack提供的握手功能,请执行以下操作
action.js
export const setX = () => {...}
export const setY = () => {...}
export const setT = () => {...}
export default { setX, setY, setT }
somecomponent.js
import actionCreators from 'actions'
console.log(actionCreators); // { setX, setY, setT }
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.