React-Nativeで作成した一般的なナビゲーションコンポーネントを使用しようとしています。呼び出しの時点で、ナビゲーションバーの色合い、タイトルなどを設定します。
ナビゲーションバーコード:
var NavigationBar = React.createClass({
render: function(title, titleColor, NavBarColor) {
var titleConfig = {
title: title,
tintColor: titleColor,
};
return (
<NavBar
title={titleConfig}
tintColor={NavBarColor}
leftButton={<Button style={styles.menuButton}></Button>}
rightButton={<Button style={styles.menuButton}></Button>} />
);
}
});
別のページに適用する:
<NavigationBar title="Categories" titleColor="#ffffff" NavBarColor="#f0b210"/>
これを適切に行う方法は?前もって感謝します。
最初にrender
はパラメーターを取りません。あなたがやりたいことは、渡した小道具を参照することです。
render: function () {
var titleConfig = {
title: this.props.title,
tintColor: this.props.titleColor
};
// Rest of code
}
これを行うだけで、NavigationBar
が再レンダリングされるたびに、NavBar
コンポーネントも再レンダリングされます。
これを示す非常に簡単な例
var NavBar = React.createClass({
render: function () {
return <div id="navbar" style={{backgroundColor: this.props.tintColor}}>
<h1 style={{color: this.props.title.tintColor}}>{this.props.title.title}</h1>
</div>;
}
});
var NavigationBar = React.createClass({
render: function() {
var titleConfig = {
title: this.props.title,
tintColor: this.props.titleColor,
};
return (
<NavBar
title={titleConfig}
tintColor={this.props.NavBarColor}
/>
);
}
});
React.render(<NavigationBar title="Categories" titleColor="#ff0" NavBarColor="#f0b210" />, document.body);
ナビゲーションバーコンポーネントを呼び出して、このような小道具を与えることができます
<NavigationBar title="Hello World" tintColor= "blue" />
NavigationBarの宣言では、次のように使用できます
class NavigationBar extends React.Component{
constructor(props){
super(props);
this.state={
NavTitle:"",
NavColor:""
};
}
componentDidMount(){
this.setState({
NavTitle: this.props.title,
NavColor:this.props.tintColor
});
}
componentWillRecieveProps(nextProps,nextState){
this.setState({
NavTitle:nextProps["title"],
NavColor:nextProps["tintColor"]
});
}
shouldComponentUpdate(nextProps,nextState){
// your condition if you want to re-render every time on props change
return true;
}
render() {
return (
<NavBar
title=this.state.NavTitle
tintColor=this.state.NavColor
leftButton={<Button style={styles.menuButton}></Button>}
rightButton={<Button style={styles.menuButton}></Button>} />
);
}
};
色とタイトルが変更されると、setStateはコンポーネントに更新されたコンポーネントを使用してコンポーネントを強制的に再レンダリングします。
renderはパラメータ化されていない関数であり、パラメータを取りません。 React Nativeでパラメーター/値を1つのコンポーネントから別のコンポーネントに渡すには、propsを使用します。propsは、プロパティを持つJavaScriptオブジェクトですあるコンポーネントから他のコンポーネントに渡すため、propsで値を渡す必要があります。