Skip to content

Commit 9784b21

Browse files
committed
v1.0.0
1 parent 034044e commit 9784b21

File tree

3 files changed

+55
-49
lines changed

3 files changed

+55
-49
lines changed

README.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,9 @@ Needs react-native >= 0.14.2
3939

4040
####Methods
4141
- <b>toggle</b> show or hide picker, default to be hiden
42+
- <b>show</b> show picker
43+
- <b>hide</b> hide picker
44+
- <b>isPickerShow</b> get status of picker, return a boolean
4245

4346
###Usage
4447

index.js

Lines changed: 51 additions & 48 deletions
Original file line numberDiff line numberDiff line change
@@ -147,7 +147,7 @@ export default class PickerAny extends React.Component {
147147
}
148148

149149
_slideUp(){
150-
this.isMoving = true;
150+
this._isMoving = true;
151151
Animated.timing(
152152
this.state.slideAnim,
153153
{
@@ -156,14 +156,14 @@ export default class PickerAny extends React.Component {
156156
}
157157
).start((evt) => {
158158
if(evt.finished) {
159-
this.isMoving = false;
160-
this.isPickerShow = true;
159+
this._isMoving = false;
160+
this._isPickerShow = true;
161161
}
162162
});
163163
}
164164

165165
_slideDown(){
166-
this.isMoving = true;
166+
this._isMoving = true;
167167
Animated.timing(
168168
this.state.slideAnim,
169169
{
@@ -172,17 +172,17 @@ export default class PickerAny extends React.Component {
172172
}
173173
).start((evt) => {
174174
if(evt.finished) {
175-
this.isMoving = false;
176-
this.isPickerShow = false;
175+
this._isMoving = false;
176+
this._isPickerShow = false;
177177
}
178178
});
179179
}
180180

181181
_toggle(){
182-
if(this.isMoving) {
182+
if(this._isMoving) {
183183
return;
184184
}
185-
if(this.isPickerShow) {
185+
if(this._isPickerShow) {
186186
this._slideDown();
187187
}
188188
else{
@@ -193,6 +193,19 @@ export default class PickerAny extends React.Component {
193193
toggle(){
194194
this._toggle();
195195
}
196+
show(){
197+
if(!this._isPickerShow){
198+
this._slideUp();
199+
}
200+
}
201+
hide(){
202+
if(this._isPickerShow){
203+
this._slideDown();
204+
}
205+
}
206+
isPickerShow(){
207+
return this._isPickerShow;
208+
}
196209

197210
_prePressHandle(callback){
198211
//通知子组件往上滚
@@ -215,22 +228,21 @@ export default class PickerAny extends React.Component {
215228
}
216229

217230
_renderParallelWheel(pickerData){
218-
let me = this;
219231
return pickerData.map((item, index) => {
220232
return (
221233
<View style={styles.pickerWheel} key={index}>
222234
<Picker
223-
selectedValue={me.state.selectedValue[index]}
235+
selectedValue={this.state.selectedValue[index]}
224236
onValueChange={value => {
225-
me.pickedValue.splice(index, 1, value);
237+
this.pickedValue.splice(index, 1, value);
226238
//do not set state to another object!! why?
227-
// me.setState({
228-
// selectedValue: me.pickedValue
239+
// this.setState({
240+
// selectedValue: this.pickedValue
229241
// });
230-
me.setState({
231-
selectedValue: JSON.parse(JSON.stringify(me.pickedValue))
242+
this.setState({
243+
selectedValue: JSON.parse(JSON.stringify(this.pickedValue))
232244
});
233-
me.state.onValueChange(JSON.parse(JSON.stringify(me.pickedValue)), index);
245+
this.state.onValueChange(JSON.parse(JSON.stringify(this.pickedValue)), index);
234246
}} >
235247
{item.map((value, index) => (
236248
<PickerItem
@@ -304,22 +316,20 @@ export default class PickerAny extends React.Component {
304316
}
305317

306318
_renderCascadeWheel(pickerData){
307-
let me = this;
308-
let thirdWheel = me.state.thirdWheelData && (
319+
let thirdWheel = this.state.thirdWheelData && (
309320
<View style={styles.pickerWheel}>
310321
<Picker
311322
ref={'thirdWheel'}
312-
selectedValue={me.state.thirdPickedDataIndex}
323+
selectedValue={this.state.thirdPickedDataIndex}
313324
onValueChange={(index) => {
314-
//on ios platform 'this' refers to Picker?
315-
me.pickedValue.splice(2, 1, me.state.thirdWheelData[index]);
316-
me.setState({
325+
this.pickedValue.splice(2, 1, this.state.thirdWheelData[index]);
326+
this.setState({
317327
thirdPickedDataIndex: index,
318328
selectedValue: 'wheel3'+index
319329
});
320-
me.state.onValueChange(JSON.parse(JSON.stringify(me.pickedValue)), 2);
330+
this.state.onValueChange(JSON.parse(JSON.stringify(this.pickedValue)), 2);
321331
}} >
322-
{me.state.thirdWheelData.map((value, index) => (
332+
{this.state.thirdWheelData.map((value, index) => (
323333
<PickerItem
324334
key={index}
325335
value={index}
@@ -335,32 +345,32 @@ export default class PickerAny extends React.Component {
335345
<View style={styles.pickerWheel}>
336346
<Picker
337347
ref={'firstWheel'}
338-
selectedValue={me.state.firstPickedData}
348+
selectedValue={this.state.firstPickedData}
339349
onValueChange={value => {
340350
let secondWheelData = Object.keys(pickerData[value]);
341-
let cascadeData = me._getCascadeData(pickerData, me.pickedValue, value, secondWheelData[0]);
351+
let cascadeData = this._getCascadeData(pickerData, this.pickedValue, value, secondWheelData[0]);
342352
//when onPicked, this.pickedValue will pass to the parent
343353
//when firstWheel changed, second and third will also change
344354
if(cascadeData.thirdWheelData){
345-
me.pickedValue.splice(0, 3, value, cascadeData.secondWheelData[0], cascadeData.thirdWheelData[0]);
355+
this.pickedValue.splice(0, 3, value, cascadeData.secondWheelData[0], cascadeData.thirdWheelData[0]);
346356
}
347357
else{
348-
me.pickedValue.splice(0, 2, value, cascadeData.secondWheelData[0]);
358+
this.pickedValue.splice(0, 2, value, cascadeData.secondWheelData[0]);
349359
}
350360

351-
me.setState({
361+
this.setState({
352362
selectedValue: 'wheel1'+value,
353363
firstPickedData: value,
354364
secondWheelData: cascadeData.secondWheelData,
355365
secondPickedDataIndex: 0,
356366
thirdWheelData: cascadeData.thirdWheelData,
357367
thirdPickedDataIndex: 0
358368
});
359-
me.state.onValueChange(JSON.parse(JSON.stringify(me.pickedValue)), 0);
360-
me.refs.secondWheel && me.refs.secondWheel.moveTo && me.refs.secondWheel.moveTo(0);
361-
me.refs.thirdWheel && me.refs.thirdWheel.moveTo && me.refs.thirdWheel.moveTo(0);
369+
this.state.onValueChange(JSON.parse(JSON.stringify(this.pickedValue)), 0);
370+
this.refs.secondWheel && this.refs.secondWheel.moveTo && this.refs.secondWheel.moveTo(0);
371+
this.refs.thirdWheel && this.refs.thirdWheel.moveTo && this.refs.thirdWheel.moveTo(0);
362372
}} >
363-
{me.state.firstWheelData.map((value, index) => (
373+
{this.state.firstWheelData.map((value, index) => (
364374
<PickerItem
365375
key={index}
366376
value={value}
@@ -372,26 +382,26 @@ export default class PickerAny extends React.Component {
372382
<View style={styles.pickerWheel}>
373383
<Picker
374384
ref={'secondWheel'}
375-
selectedValue={me.state.secondPickedDataIndex}
385+
selectedValue={this.state.secondPickedDataIndex}
376386
onValueChange={(index) => {
377-
let thirdWheelData = pickerData[me.state.firstPickedData][me.state.secondWheelData[index]];
387+
let thirdWheelData = pickerData[this.state.firstPickedData][this.state.secondWheelData[index]];
378388
if(thirdWheelData){
379-
me.pickedValue.splice(1, 2, me.state.secondWheelData[index], thirdWheelData[0]);
389+
this.pickedValue.splice(1, 2, this.state.secondWheelData[index], thirdWheelData[0]);
380390
}
381391
else{
382-
me.pickedValue.splice(1, 1, me.state.secondWheelData[index]);
392+
this.pickedValue.splice(1, 1, this.state.secondWheelData[index]);
383393
}
384394

385-
me.setState({
395+
this.setState({
386396
secondPickedDataIndex: index,
387397
thirdWheelData,
388398
thirdPickedDataIndex: 0,
389399
selectedValue: 'wheel2'+index
390400
});
391-
me.state.onValueChange(JSON.parse(JSON.stringify(me.pickedValue)), 1);
392-
me.refs.thirdWheel && me.refs.thirdWheel.moveTo && me.refs.thirdWheel.moveTo(0);
401+
this.state.onValueChange(JSON.parse(JSON.stringify(this.pickedValue)), 1);
402+
this.refs.thirdWheel && this.refs.thirdWheel.moveTo && this.refs.thirdWheel.moveTo(0);
393403
}} >
394-
{me.state.secondWheelData.map((value, index) => (
404+
{this.state.secondWheelData.map((value, index) => (
395405
<PickerItem
396406
key={index}
397407
value={index}
@@ -449,13 +459,6 @@ export default class PickerAny extends React.Component {
449459
}
450460

451461
render(){
452-
/*let pickerBtn = Platform.OS === 'ios' ? null : (
453-
<View style={styles.pickerBtnView}>
454-
<Text style={styles.pickerMoveBtn} onPress={this._prePressHandle.bind(this)}>上一个</Text>
455-
<Text style={styles.pickerMoveBtn} onPress={this._nextPressHandle.bind(this)}>下一个</Text>
456-
</View>
457-
);*/
458-
// let pickerBtn = null;
459462
return (
460463
<Animated.View style={[styles.picker, {
461464
height: this.state.pickerHeight,

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "react-native-picker",
3-
"version": "0.4.1",
3+
"version": "1.0.0",
44
"description": "react-native-picker",
55
"main": "index.js",
66
"scripts": {

0 commit comments

Comments
 (0)