スイッチコンポーネントが内部にあります。この全体のコンポーネントはクリック可能です。このコンポーネントをクリックすると、dispatch(reduxストアを変更する)が実行され、このコンポーネントが再レンダリングされます。 私が必要とするのは、コンポーネント全体を再レンダリングせず、そのスイッチコンポーネントを適切な状態にアニメーション化することです。このReact Native(Redux付き)animateプログラム的にスイッチ
<TouchableOpacity onPress={onPress}>
<Text>{this.props.title}</Text>
<Switch value={this.state.active}/>
</TouchableOpacity>
任意のアイデアのような
何か?
私はこの非常に一般的な使用例を見つけました。私はこのようなシナリオがたくさんあるので、私はこの動作が必要ですが、ウェブ上で例や解決策を見つけることはできません。たぶん私は何かが欠けているかもしれません。私もこれを試してみました
おかげ
--- EDIT ---
。私はshouldComponentUpdateで更新を無効にしようとしましたが、私はwillRecievePropsでのみ状態を設定しようとしました、そして/またはトグルしなくてもトグルしました。私もLayoutAnimationで試してみました。しかし、何も動作しません。 this.setState()は、Switchコンポーネントをアニメーション化しません。 また、this._switch._rctSwitch.setNativeProps({value:nextProps.active})で再生しようとしましたが、これは動作しません(また、_rctSwitchのために匂いがします)。
class ViewWithSwitchInside extends React.Component {
constructor(props) {
super(props)
this.toggle = this.toggle.bind(this);
this.state = {
active: props.active
}
}
componentWillReceiveProps(nextProps) {
if (this.state.active != nextProps.active) {
this.setState({ active: nextProps.active })
}
}
toggle() {
let newValue = !this.state.active
this.setState({
active: newValue,
})
if (typeof this.props.onClick === 'function') {
this.props.onClick(newValue)
}
}
render() {
return (
<TouchableWithoutFeedback onPress={this.toggle}>
<View>
<Text>{this.props.title}</Text>
<Switch value={this.state.active} />
</View>
</TouchableWithoutFeedback>
)
}
}
代わりにこのようなことをしてもらえますか? http://stackoverflow.com/questions/40865391/how-to-show-text-yes-no-inside-a-switch-in-react-native – Tom
私はあなたが何を指しているのかわからないアニメーションで。でも、私は元の質問を編集しました。これは最小の例ですが、試してみてください。アニメーション化されません。変更は、そのスイッチを直接クリックした場合にのみアニメーション表示されます。これがバグかどうかはわかりませんが、基本的な機能のようです。 – trubi
@trubi:私は同じ問題を抱えているかもしれませんが、あなたの問題を正確に理解できません。私はあなたがそれをクリックするとアニメートするスイッチを持っていますが、私はまた、他のユーザーのやりとりに基づいてそれを切り替える必要があります。しかし、単に 'setState'でそれを変更すると、スムーズなアニメーションなしに他の位置に即座にジャンプします。これはあなたの問題とは違いますか? – hippietrail