我的組件裏面有Switch組件。整個組件都是可點擊的。當你點擊這個組件時,它會激發調度(修改redux存儲)並導致這個組件被重新渲染。 我需要的是不重新渲染整個組件,而只是爲了將Switch組件設置爲適當的狀態。React Native(with Redux)animate通過編程方式切換
像這樣的事情
<TouchableOpacity onPress={onPress}>
<Text>{this.props.title}</Text>
<Switch value={this.state.active}/>
</TouchableOpacity>
任何想法?
我發現這個很常見的用例,我知道我會遇到很多類似的場景,所以我需要這種行爲,但我無法在Web上找到任何示例或解決方案。也許我只是想念一些東西。
感謝
---編輯---
我也嘗試過這一點。我試圖禁用更新與shouldComponentUpdate,我試圖設置狀態只在willRecieveProps和/或切換,即使沒有切換。我也試着玩LayoutAnimation。但沒有任何工作。 this.setState()只是不會爲開關組件設置動畫。 我也嘗試玩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