第 17 天!
昨天我们建立了, To Do List 专案
这是我们预期的画面,
昨天做到
今天我们来完成最後下面的代办事项列表
这代办事项必须要有两种状态显示,
not done
done
在 react-native
,
我们要建立列表,用的是 react-native
提供的 FlatList component
, 它可以让我们把指定的资料显示成列表
列表的原始阵列资料
指定列表显示的项目是哪一个 component
,
会有三个变数透过 props 传递下来,
这比较特别, 它是 function ,
作用是更新指定分隔线的参数,
有两个参数
leading
& trailing
两个选项separators.updateProps('leading' | 'trailing', props);
假如 select 带入是 leading
, 以触发项目来判断,更新上方有分隔线的
反之,带入 trailing
则会更新下方的分隔线的部份
客制化项目分隔符号,没设定的话就是无显示
会有两个变数透过 props 传递下来,
以项目资料指定列表的 key 值
那 list 的结构大概是这样
const list = [
{ id: 1, text: 'to do 1' },
{ id: 2, text: 'to do 2' },
{ id: 3, text: 'to do 3' },
];
<FlatList
data={list}
renderItem={({ item, index, separators }) => {
return (
<TouchableOpacity>
<View></View>
<Text>{item.text}</Text>
</TouchableOpacity>
);
}}
keyExtractor={(item) => item.id}
/>;
那一样,我们先看看没有样式的画面如何
嗯.. 这真的很乾净,
我们需要设定一些样式,
{
item: {},
itemEven:{},
itemOdd:{},
itemText: {},
tickArea: {},
tick: {},
}
带入结构中会是这样
<FlatList
data={list}
renderItem={({ item, index, separators }) => {
return (
<TouchableOpacity style={[styles.item]}>
<View style={[styles.tickArea]}></View>
<Text style={[styles.itemText]}>{item.text}</Text>
</TouchableOpacity>
);
}}
keyExtractor={(item) => item.id}
/>
样式加入後,
因为列表是有两个颜色,并且用奇偶数区分,
我们用 index % 2 === 0
来判断,
最後给予哪个 style
<FlatList
data={list}
renderItem={({ item, index, separators }) => {
const backgroundColorStyle =
index % 2 === 0 ? styles.itemEven : styles.itemOdd;
return (
<TouchableOpacity
style={[styles.item, backgroundColorStyle, styles.itemDone]}>
<View style={[styles.tickArea]}></View>
<Text style={[styles.itemText]}>{item.text}</Text>
</TouchableOpacity>
);
}}
keyExtractor={(item) => item.id}
/>
那这是一般画面:
这是代办事项完成後的画面:
至此,我们这 Todo list
画面告一段落
>>: Day 17 - useReducer + useContext = Redux?
今天继续认识四种 Promise 可以使用的方法,基础的用法可以先参考昨天的文章 Promise.a...
今天又要教到新的容器啦~(怎麽Python容器这麽多(。ŏ_ŏ) 字典,这种容器的元素格式很特别哦,...
在正式撰写程序前,本期内容想汇整几个我曾碰到的问题,往後在碰到以下这些问题时,能更快找出解决方法。 ...
前言 使用pyspark函式库实作 word count程序。 程序实作 安装 pyspark函式库...
前言 网站上线後,希望给更多人能找到的话,通常会用 Google Search Console,让自...