Last Updated on : 2021-09-14 05:34:49download
This topic describes the properties and example of the IP camera (IPC) grid list component TYIpcGridList. You can set the number of buttons to be displayed on each row. The component automatically displays all buttons evenly with the same width.

| Field | Description | Required | Type | Default value |
|---|---|---|---|---|
| data | The source data. | Yes | Array | |
| rowNumber | The number of buttons on each row. | No | number | 3 |
| containerHorizontalWidth | The padding value of the container in the horizontal direction. | No | number | 10 |
| containerVerticalWidth | The padding value of the container in the vertical direction. | No | number | 10 |
| marginHorizontalWidth | The margin value of the buttons in the horizontal direction. | No | number | 5 |
| marginVerticalWidth | The margin value of the buttons in the vertical direction. | No | number | 5 |
| renderItem | The rendering function of the buttons. | Yes | Function | |
| isCover | If the number of buttons on the last row is not the value of rowNumber, these buttons are evenly distributed on the last row. |
No | bool | false |
| keyExtractor | The key value of each button. | No | Function | |
| onPress | The button tap event. | No | Function |
import { TYIpcGridList } from '@tuya/tuya-panel-ipc-sdk';
import React from 'react';
import { View, Text, StyleSheet } from 'react-native';
interface itemInterface {
item: any;
index: number;
buttonWidth: number;
}
const IpcGridList: React.FunctionComponent = () => {
const handlePress = (item: { name: string }) => {
console.log('click', item.name);
};
const renderButton = () => {
const renderItem = (itemObj: itemInterface) => {
const { item } = itemObj;
return (
<View style={styles.button}>
<Text style={styles.text}>{item.name}</Text>
</View>
);
};
const data = [
{ name: 'Button1' },
{ name: 'Button2' },
{ name: 'Button3' },
{
name: 'Button4',
prop: { disabled: true }
// The `prop` property in the source data indicates the properties that are inherited by the buttons in the component.
},
{ name: 'Button5' },
];
return (
<TYIpcGridList
onPress={handlePress}
keyExtractor={(item: { name: string }) => item.name}
containerVerticalWidth={10}
data={data}
renderItem={renderItem}
rowNumber={2}
/>
);
};
return (
<View style={styles.container}>
{renderButton()}
</View>
);
};
const styles = StyleSheet.create({
button: {
alignItems: 'center',
backgroundColor: '#fff',
borderRadius: 5,
flexDirection: 'row',
height: 40,
justifyContent: 'space-between',
paddingLeft: 5,
paddingRight: 5,
},
container: {
backgroundColor: '#f8f8f8',
flex: 1,
},
text: {
color: '#333',
fontSize: 16,
marginLeft: 5,
},
});
export default IpcGridList;
Is this page helpful?
YesFeedbackIs this page helpful?
YesFeedback