React native React Native:定义用户定义组件的最佳实践是什么?
我认为,React native React Native:定义用户定义组件的最佳实践是什么?,react-native,React Native,我认为,render函数将执行几次。如果我将代码放在导入代码和类定义代码之间,代码将执行一次 我的观点正确吗 是否需要将此用户定义的代码放在单独的文件中 在单独的文件中: import React, {Component, PropTypes} from "react"; import { View, Image, Text, ListView, Dimensions, StyleSheet, TouchableOpacity, } from 'rea
render
函数将执行几次。如果我将代码放在导入代码
和类定义代码之间,代码将执行一次
我的观点正确吗
是否需要将此用户定义的代码放在单独的文件中
在单独的文件中:
import React, {Component, PropTypes} from "react";
import {
View,
Image,
Text,
ListView,
Dimensions,
StyleSheet,
TouchableOpacity,
} from 'react-native';
const ItemView = ({title, onPress, isActive}) => (
<TouchableOpacity onPress={onPress}>
<View style={[styles.itemVTextBox,
isActive ? styles.activeItemVTextBox : null
]}>
<Text style={[
styles.item,
isActive ? styles.activeItem : null
]}>{title}</Text>
</View>
</TouchableOpacity>
);
class MyOrder extends Component {
render(){
return (
...
)
}
}
export default const ItemView=({title,onPress,isActive})=>(
{title}
);
在容器组件中
:
从“文件路径”导入ItemView
这是一种很好的做法吗?几乎每个组件都使用的按钮,因此使其成为可重用组件如果您总是为可重用组件定义单独的文件夹,这可能是一种很好的做法,下面是一个示例:
export default const ItemView = ({title, onPress, isActive}) => (
<TouchableOpacity onPress={onPress}>
<View style={[styles.itemVTextBox,
isActive ? styles.activeItemVTextBox : null
]}>
<Text style={[
styles.item,
isActive ? styles.activeItem : null
]}>{title}</Text>
</View>
</TouchableOpacity>
);
//Button.js
从“React”导入React,{Component,PropTypes};
进口{
看法
形象,,
文本,
ListView,
尺寸,
样式表,
可触摸不透明度,
}从“反应本机”;
常量按钮=(道具)=>{
const{title,onpress,isActive}=this.props
报税表(
{title}
);
}
导出默认按钮
//主要成分
从“@…/Button.js”导入按钮
类MyOrder扩展组件{
render(){
返回(
...
)
}
}
在Button.js中,我使用了react-native支持的jsx,这样实现看起来很干净,也很好
干杯:)如果要重用该代码,请将其包装为组件。但是调用这个方法的次数与调用render方法的次数相同(我估计您将在render中调用该方法),是什么导致您认为代码只执行一次?而且,你没有遵循Facebook团队提出的标准。我认为渲染功能会执行几次。因此,const语句将执行几次。如果我将定义的代码放在render函数之外,我认为定义的语句只执行一次。
export default const ItemView = ({title, onPress, isActive}) => (
<TouchableOpacity onPress={onPress}>
<View style={[styles.itemVTextBox,
isActive ? styles.activeItemVTextBox : null
]}>
<Text style={[
styles.item,
isActive ? styles.activeItem : null
]}>{title}</Text>
</View>
</TouchableOpacity>
);
//Button.js
import React, {Component, PropTypes} from "react";
import {
View,
Image,
Text,
ListView,
Dimensions,
StyleSheet,
TouchableOpacity,
} from 'react-native';
const Button = (props) => {
const { title,onpress,isActive } = this.props
return (
<TouchableOpacity onPress={onPress}>
<View style={[styles.itemVTextBox,
isActive ? styles.activeItemVTextBox : null
]}>
<Text style={[
styles.item,
isActive ? styles.activeItem : null
]}>{title}</Text>
</View>
</TouchableOpacity>
);
}
export default Button
//Main component
import Button from '@.../Button.js'
class MyOrder extends Component {
render(){
return (
<Button title='login' isActive={false} onPress={this.loginButtonPressed()} />
...
)
}
}