2017-03-06 103 views
1

我正在努力幹掉我使用的幾個函數,這些函數涉及幾個我的組件類。 Mixins是一個不行,我正在努力瞭解我應該使用什麼替代方案。將代碼設置爲模塊似乎很有前途,但我不明白如何打包它,以便我可以使用它來擴展幾個不同的類。React ES6類之間的代碼共享

說我有:

class functionsToShare { 
    thingToDo(){ 
    //do a thing 
    } 
} 

export default functionsToShare; 

我假設在我的組件類我想要的東西,如:

import React from 'react'; 
import functionsToShare from 'some/path' 
class SomeComponent extends React.Component{ 
    constructor(props){ 
    super(props); 
    } 

    render(){ 
    return (

    ); 
    } 
} 

export SomeComponent 

但是我怎麼使用共享類致以組件?如果我在類聲明中聲明它像mycomponent被擴展爲React.Component那樣會挫敗可重用性......是否有另一種方法我應該看?

+2

你能不能只是做'functionsToShare.thingToDo()'? – Chris

+0

我想我可以。在這種情況下,這將很好地工作。 有沒有辦法擴展類,以便模塊類引入新的實例方法或擴展類的原型函數? –

回答

0

您可以將您的共享函數文件創建爲具有多個需要使用的函數的文件,並將每個函數導出爲命名導出。像這樣:

export function thingToDo() { 
    ... 
} 

export function getUserByEmail(email) { 
    ... 
} 

將此文件另存爲例如functionsToShare.js

每個

隨即反應過來組件類(或其他地方),你可以導入功能,只是你需要的:

import {thingToDo} from "./functionsToShare"; // import a function 
thingToDo(); // call function 

或所有這些:

import * as somename from "./functionsToShare"; // import all functions from that file 
somename.thingToDo(); // call specific function