Add setNativeProps
Summary: Curently FlatList does not implement setting native props directly like the old ListView did. This pr introduce the `setNativeProps` function which delegates to MetroListView or VirtualizedList. Thos don't have `setNativeProps` handling either, so, I delegated further to the respective ListView and Scroll components, which do have handling for it, thus, allowing to set the native props through FlatList. Create a project with a FlatList and change a native property using `setNativeProps`: ```javascript componentDidMount() { setInterval(() => { this.list.setNativeProps({ style: {backgroundColor:"white"} }) }, 1000) } render() { return ( <View style={styles.container}> <FlatList ref={component => this.list = component} style={{backgroundColor:"black"}} data={[{key: 'a'}, {key: 'b'}]} renderItem={({item}) => <Text>{item.key}</Text>} /> </View> ) } ``` Fixes #13501 Closes https://github.com/facebook/react-native/pull/13529 Differential Revision: D5283593 Pulled By: sahrens fbshipit-source-id: 8f96f88e286042d82452fef924689b5a8a783987
This commit is contained in:
parent
60783aa6ba
commit
75508c12ff
|
@ -388,6 +388,12 @@ class FlatList<ItemT>
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
setNativeProps(props: Object) {
|
||||||
|
if (this._listRef) {
|
||||||
|
this._listRef.setNativeProps(props);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
componentWillMount() {
|
componentWillMount() {
|
||||||
this._checkProps(this.props);
|
this._checkProps(this.props);
|
||||||
}
|
}
|
||||||
|
|
|
@ -95,6 +95,11 @@ class MetroListView extends React.Component {
|
||||||
getListRef() {
|
getListRef() {
|
||||||
return this._listRef;
|
return this._listRef;
|
||||||
}
|
}
|
||||||
|
setNativeProps(props: Object) {
|
||||||
|
if (this._listRef) {
|
||||||
|
this._listRef.setNativeProps(props);
|
||||||
|
}
|
||||||
|
}
|
||||||
static defaultProps: DefaultProps = {
|
static defaultProps: DefaultProps = {
|
||||||
keyExtractor: (item, index) => item.key || String(index),
|
keyExtractor: (item, index) => item.key || String(index),
|
||||||
renderScrollComponent: (props: Props) => {
|
renderScrollComponent: (props: Props) => {
|
||||||
|
|
|
@ -313,6 +313,12 @@ class VirtualizedList extends React.PureComponent<OptionalProps, Props, State> {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
setNativeProps(props: Object) {
|
||||||
|
if (this._scrollRef) {
|
||||||
|
this._scrollRef.setNativeProps(props);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
static defaultProps = {
|
static defaultProps = {
|
||||||
disableVirtualization: false,
|
disableVirtualization: false,
|
||||||
horizontal: false,
|
horizontal: false,
|
||||||
|
|
Loading…
Reference in New Issue