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' -> 这有效,但我不想导入所有功能
你不能那样做。
但是你可以把它们放在一个对象中:
import {setX, setY, setT} from 'actions'
const actionCreators = {setX, setY, setT};
Run Code Online (Sandbox Code Playgroud)
MDN对所有形式的import语句都有很好的概述:
句法
Run Code Online (Sandbox Code Playgroud)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。
| 归档时间: |
|
| 查看次数: |
2150 次 |
| 最近记录: |