enter code here
Wheel Pickerコンポーネントをプロジェクトに含めることを試みていました。それはステートフルなコンポーネントでそれをカバーするときにうまくいきます。私はステートレスコンポーネントに変換しようとしました。ホイールをスクロールすると、選択されたインデックスは常にデフォルト値にインデックスされます(例:アイテム番号10にスクロールし、私は正しい値を受け取りますが、デフォルト値0に戻ります)。私のコンポーネントに何か問題がありますか?ステートレスコンポーネントの状態の代替
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;
私はこのようなコンポーネントを置く:
<WheelTimePicker selectedItems={{selectedMin: 2, selectedSec: 0}} receiveTime={(rc)=> _displayTime(rc)}/>
:そして、あなたの
Picker
で、おそらく少しのようなものに調整する必要があります。 –ステートレスコンポーネントとReduxを使用してすべてのステートフルコンポーネントを置き換えることができますか?ステートフルコンポーネントを使用するよりも複雑な動作をしたりグローバルステート(ストア)を使用すると感じられることがあります。 – Ohaha
状況による - コンポーネントが他のコンポーネントとデータを共有する必要がない場合、コンポーネントをグローバルストアに追加する必要はありません。 –