Skip to content

Commit cd73200

Browse files
committed
update to fix re-renders
1 parent 28738e2 commit cd73200

File tree

5 files changed

+43
-21
lines changed

5 files changed

+43
-21
lines changed

Diff for: demo/App.js

+14-4
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
import React from 'react';
22
import {
3+
Alert,
34
Button,
45
Text,
56
TextInput,
@@ -9,7 +10,7 @@ import {
910
TouchableWithoutFeedback,
1011
View,
1112
} from 'react-native';
12-
// import {Chevron} from 'react-native-shapes';
13+
import {Chevron} from 'react-native-shapes';
1314
// import { Ionicons } from '@expo/vector-icons';
1415
import RNPickerSelect, {defaultStyles} from './react-native-picker-select';
1516

@@ -154,6 +155,9 @@ export default class App extends React.Component {
154155
onDownArrow={() => {
155156
this.inputRefs.favSport1.togglePicker();
156157
}}
158+
onDonePress={() => {
159+
Alert.alert('Done pressed');
160+
}}
157161
style={pickerSelectStyles}
158162
value={this.state.favSport0}
159163
ref={el => {
@@ -172,6 +176,9 @@ export default class App extends React.Component {
172176
favSport1: value,
173177
});
174178
}}
179+
onUpArrow={() => {
180+
this.inputRefs.favSport0.togglePicker();
181+
}}
175182
style={pickerSelectStyles}
176183
value={this.state.favSport1}
177184
useNativeAndroidPickerStyle={false}
@@ -192,6 +199,9 @@ export default class App extends React.Component {
192199
favSport2: value,
193200
});
194201
}}
202+
onDonePress={() => {
203+
Alert.alert('Should never appear - no InputAccessoryView');
204+
}}
195205
InputAccessoryView={() => null}
196206
style={pickerSelectStyles}
197207
value={this.state.favSport2}
@@ -221,9 +231,9 @@ export default class App extends React.Component {
221231
value={this.state.favSport3}
222232
useNativeAndroidPickerStyle={false}
223233
textInputProps={{underlineColorAndroid: 'cyan'}}
224-
// Icon={() => {
225-
// return <Chevron size={1.5} color="gray" />;
226-
// }}
234+
Icon={() => {
235+
return <Chevron size={1.5} color="gray" />;
236+
}}
227237
/>
228238

229239
<View paddingVertical={5} />

Diff for: demo/package.json

+2-1
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,8 @@
1313
"lodash.isequal": "^4.5.0",
1414
"prop-types": "^15.7.2",
1515
"react": "16.9.0",
16-
"react-native": "0.61.5"
16+
"react-native": "0.61.5",
17+
"react-native-shapes": "^0.1.0"
1718
},
1819
"devDependencies": {
1920
"@babel/core": "^7.6.2",

Diff for: demo/react-native-picker-select/index.js

+11-8
Original file line numberDiff line numberDiff line change
@@ -180,16 +180,19 @@ export default class RNPickerSelect extends PureComponent {
180180
this.togglePicker(false, onDownArrow);
181181
}
182182

183-
onValueChange(value, index) {
184-
const {onValueChange} = this.props;
183+
onValueChange(val, idx) {
184+
const {onValueChange, value} = this.props;
185185

186-
onValueChange(value, index);
186+
onValueChange(val, idx);
187187

188-
this.setState(prevState => {
189-
return {
190-
selectedItem: prevState.items[index],
191-
};
192-
});
188+
// if value prop is not used, maintain selectedItem internally
189+
if (isEqual(value, undefined)) {
190+
this.setState(prevState => {
191+
return {
192+
selectedItem: prevState.items[idx],
193+
};
194+
});
195+
}
193196
}
194197

195198
onOrientationChange({nativeEvent}) {

Diff for: demo/yarn.lock

+5
Original file line numberDiff line numberDiff line change
@@ -5191,6 +5191,11 @@ react-is@^16.8.1, react-is@^16.8.4, react-is@^16.9.0:
51915191
resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.12.0.tgz#2cc0fe0fba742d97fd527c42a13bec4eeb06241c"
51925192
integrity sha512-rPCkf/mWBtKc97aLL9/txD8DZdemK0vkA3JMLShjlJB3Pj3s+lpf1KaBzMfQrAmhMQB0n1cU/SUGgKKBCe837Q==
51935193

5194+
react-native-shapes@^0.1.0:
5195+
version "0.1.0"
5196+
resolved "https://registry.yarnpkg.com/react-native-shapes/-/react-native-shapes-0.1.0.tgz#53a9a01ba15ff33d35d0062c25ede48382033b30"
5197+
integrity sha512-5EHcc/Burlvp2UdfzT+EkQqGn7WO6SQGxZ9w0/4BWYMB/bShA8/lnhuWgxQz+IxZwxnzPkYiR4zCS2NlQQJGig==
5198+
51945199
51955200
version "0.61.5"
51965201
resolved "https://registry.yarnpkg.com/react-native/-/react-native-0.61.5.tgz#6e21acb56cbd75a3baeb1f70201a66f42600bba8"

Diff for: src/index.js

+11-8
Original file line numberDiff line numberDiff line change
@@ -179,16 +179,19 @@ export default class RNPickerSelect extends PureComponent {
179179
this.togglePicker(false, onDownArrow);
180180
}
181181

182-
onValueChange(value, index) {
183-
const { onValueChange } = this.props;
182+
onValueChange(val, idx) {
183+
const { onValueChange, value } = this.props;
184184

185-
onValueChange(value, index);
185+
onValueChange(val, idx);
186186

187-
this.setState((prevState) => {
188-
return {
189-
selectedItem: prevState.items[index],
190-
};
191-
});
187+
// if value prop is not used, maintain selectedItem internally
188+
if (isEqual(value, undefined)) {
189+
this.setState((prevState) => {
190+
return {
191+
selectedItem: prevState.items[idx],
192+
};
193+
});
194+
}
192195
}
193196

194197
onOrientationChange({ nativeEvent }) {

0 commit comments

Comments
 (0)