enter code here
Ich habe versucht, die Wheel Picker Komponente zu meinem Projekt hinzuzufügen. Es funktioniert gut, wenn es in der zustandsbehafteten Komponente bedeckt.So versuchte ich, es in zustandslose Komponente zu konvertieren, wenn ich das Rad blättern, indexiert den ausgewählten Index immer auf den Standardwert (Bsp .: wenn ich zu Element Nummer 10 blättern, und das Rad automatisch blättern zurück auf Standard 0), obwohl ich die richtigen Werte erhalte. Stimmt etwas nicht mit meiner Komponente?Alternative des Zustands in zustandslosen Komponente
import React, {PropTypes} from 'react'
import {
Component,
StyleSheet,
Text,
View
} from 'react-native';
import Picker from 'react-native-wheel-picker'
var PickerItem = Picker.Item;
const styles = StyleSheet.create({
container: {
flex: 1,
justifyContent: 'center',
alignItems: 'center',
backgroundColor: 'transparent',
},
});
const WheelTimePicker = ({selectedItems, receiveTime}) => {
const _renderPikcer =() => {
firstData = {
secondList: [],
minuteList: [],
};
for (var i = 0; i < 60; i++) {
firstData.secondList.push(i + 'sec');
firstData.minuteList.push(i + 'min');
}
return (
<View>
<Picker style={{ left: -70, width: 60, height: 60 }}
selectedValue={selectedItems.selectedMin}
itemStyle={{ color: "white", fontSize: 20 }}
onValueChange={(index) => { selectedItems.selectedMin = index;receiveTime(selectedItems); }}>
{firstData.minuteList.map((value, i) => (
<PickerItem label={value} value={i} key={"money" + value} />
))}
</Picker>
<Picker style={{ left: 60, width: 60, height: 70 }}
selectedValue={selectedItems.selectedSec}
itemStyle={{ color: "white", fontSize: 20 }}
onValueChange={(index) => { selectedItems.selectedSec = index; receiveTime(selectedItems) }}>
{firstData.secondList.map((value, i) => (
<PickerItem label={value} value={i} key={"money" + value} />
))}
</Picker>
</View>
);
}
return (
<View style={styles.container}>
{_renderPikcer()}
</View>
);
};
WheelTimePicker.propTypes = {
selectedItems: PropTypes.object.isRequired,
receiveTime: PropTypes.func.isRequired,
};
export default WheelTimePicker;
Ich habe die Komponente wie folgt aus:
<WheelTimePicker selectedItems={{selectedMin: 2, selectedSec: 0}} receiveTime={(rc)=> _displayTime(rc)}/>
Sie bei der Integration redux in Ihre Anwendung aussehen sollte, so dass die Komponentenwerte von Requisiten, anstatt Zustand zeigen. –
Können wir statusfreie Komponenten und Redux verwenden, um alle statusbehafteten Komponenten zu ersetzen? In einigen Fällen habe ich das Gefühl, dass das Schreiben von Aktionen und das Verwenden des globalen Zustands (Speichern) komplexer ist als die Verwendung der statusbehafteten Komponente. – Ohaha
Es ist situationsbedingt - wenn eine Komponente keine Daten mit anderen Komponenten teilen muss, dann hat es keinen Sinn, sie dem globalen Speicher hinzuzufügen. –