虽然有类似的问题,但我无法创建具有多个功能的文件。不确定该方法是否已经过时,因为RN正在快速发展。 How to create global helper function in react native?
我是React Native的新手。
我想要做的是创建一个包含许多可重用函数的js文件,然后将其导入组件并从那里调用它。
到目前为止我一直在做的事情可能看起来很愚蠢,但我知道你会在这里提出要求。
我尝试创建一个类名Chandu并像这样导出它
'use strict';
import React, { Component } from 'react';
import {
AppRegistry,
Text,
TextInput,
View
} from 'react-native';
export default class Chandu extends Component {
constructor(props){
super(props);
this.papoy = {
a : 'aaa'
},
this.helloBandu = function(){
console.log('Hello Bandu');
},
}
helloChandu(){
console.log('Hello Chandu');
}
}
然后我将其导入任何必需的组件。
import Chandu from './chandu';
然后像这样称呼它
console.log(Chandu);
console.log(Chandu.helloChandu);
console.log(Chandu.helloBandu);
console.log(Chandu.papoy);
唯一有用的是第一个console.log,这意味着我正在导入正确的路径,而不是其他任何路径。
请问这样做的正确方法是什么?
答案 0 :(得分:129)
快速注意:您正在导入类,除非它们是静态属性,否则不能在类上调用属性。在此处阅读有关课程的更多信息:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Classes
但是,有一种简单的方法可以做到这一点。如果您正在创建辅助函数,则应该创建一个导出如下函数的文件:
export function HelloChandu() {
}
export function HelloTester() {
}
然后像这样导入它们:
import { HelloChandu } from './helpers'
答案 1 :(得分:45)
另一种方法是创建一个帮助文件,在该文件中您有一个const对象,该对象具有作为对象属性的功能。这样,您只能导出和导入一个对象。
helpers.js
const helpers = {
helper1: function(){
},
helper2: function(param1){
},
helper3: function(param1, param2){
}
}
export default helpers;
然后,像这样导入:
import helpers from './helpers';
并像这样使用:
helpers.helper1();
helpers.helper2('value1');
helpers.helper3('value1', 'value2');
答案 2 :(得分:17)
我相信这可以提供帮助。在目录中的任何位置创建fileA并导出所有函数。
export const func1=()=>{
// do stuff
}
export const func2=()=>{
// do stuff
}
export const func3=()=>{
// do stuff
}
export const func4=()=>{
// do stuff
}
export const func5=()=>{
// do stuff
}
在这里,在你的React组件类中,你只需编写一个import语句。
import React from 'react';
import {func1,func2,func3} from 'path_to_fileA';
class HtmlComponents extends React.Component {
constructor(props){
super(props);
this.rippleClickFunction=this.rippleClickFunction.bind(this);
}
rippleClickFunction(){
//do stuff.
// foo==bar
func1(data);
func2(data)
}
render() {
return (
<article>
<h1>React Components</h1>
<RippleButton onClick={this.rippleClickFunction}/>
</article>
);
}
}
export default HtmlComponents;
答案 3 :(得分:4)
要实现所需的文件并更好地组织文件,可以创建index.js来导出您的帮助文件。
假设您有一个名为 / helpers 的文件夹。 在此文件夹中,您可以创建按内容,操作或所需的内容划分的功能。
示例:
/* Utils.js */
/* This file contains functions you can use anywhere in your application */
function formatName(label) {
// your logic
}
function formatDate(date) {
// your logic
}
// Now you have to export each function you want
export {
formatName,
formatDate,
};
让我们创建另一个文件,该文件具有帮助您处理表的功能:
/* Table.js */
/* Table file contains functions to help you when working with tables */
function getColumnsFromData(data) {
// your logic
}
function formatCell(data) {
// your logic
}
// Export each function
export {
getColumnsFromData,
formatCell,
};
现在的诀窍是在 helpers 文件夹中包含index.js:
/* Index.js */
/* Inside this file you will import your other helper files */
// Import each file using the * notation
// This will import automatically every function exported by these files
import * as Utils from './Utils.js';
import * as Table from './Table.js';
// Export again
export {
Utils,
Table,
};
现在您可以分别导入以使用每个功能:
import { Table, Utils } from 'helpers';
const columns = Table.getColumnsFromData(data);
Table.formatCell(cell);
const myName = Utils.formatName(someNameVariable);
希望它可以帮助您更好地组织文件。
答案 4 :(得分:1)
我更喜欢创建文件夹名称为Utils的文件,并在内部创建页面索引,其中包含认为您可以通过
提供帮助const findByAttr = (component,attr) => {
const wrapper=component.find(`[data-test='${attr}']`);
return wrapper;
}
const FUNCTION_NAME = (component,attr) => {
const wrapper=component.find(`[data-test='${attr}']`);
return wrapper;
}
export {findByAttr, FUNCTION_NAME}
当您需要使用它时,应将其导入为“ {}”,因为您没有使用默认关键字look
import {FUNCTION_NAME,findByAttr} from'.whare file is store/utils/index'
答案 5 :(得分:1)
如果要使用课程,可以这样做。
Helper.js
function x(){}
function y(){}
export default class Helper{
static x(){ x(); }
static y(){ y(); }
}
App.js
import Helper from 'helper.js';
/****/
Helper.x