2017-05-09 9 views
0
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> 
); 

誰かがこのコードをrenderに書きます。React Native:ユーザー定義コンポーネントを定義するベストプラクティスは何ですか?

このコードをimportclass defineの間に挿入すると、このコードも機能します。

私のコードは次のようである:私の意見では

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 (

    ... 
    ) 
    } 
    } 

render関数が数回実行されます。 import codeclass defineコードの間にコードを挿入すると、コードは1回実行されます。

私の見解は正しいですか?

このユーザー定義コードを別のファイルに置く必要はありますか? container component

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> 
); 

: 'filePathに' から

インポートItemView別のファイルに

このプラクティスは優れていますか?ボタンで

//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()} /> 
    ... 
    ) 
    } 
    } 

:そう以下、それあなたが常に再利用可能なコンポーネント用に別のフォルダを定義した場合、それは良い練習することができ、再利用可能なコンポーネント作成のほぼすべてのコンポーネントを使用している

+0

コードを再利用する場合は、コンポーネントとしてラップしてください。しかし、レンダリングメソッドが呼び出される回数だけこのメソッドを呼び出すことになります(レンダリングの中でそのメソッドを呼び出すことを想起しています)。コードが一度だけ実行されると思うように導くのは何ですか? また、あなたはFacebookチームが提案した基準に従っていません。 –

+0

レンダリング機能は数回実行されると思います。したがって、const文は数回実行されます。定義されたコードをレンダー機能から外した場合、定義された文が一度実行されたと思います。 – jiexishede

答えて

0

ボタンは一例です。 js、私は使用してjsxをサポートしていますネイティブの反応とそれはこのように実装するクリーンで良い練習に見えます。

乾杯:

関連する問題