如果条件为真,如何添加新组件?主动的

我是react-native的新手,我做了一个简单的方块笔记,现在的问题是,我想显示用户输入应用程序后已经保存的笔记,为此我使用以下代码:

show_notes = async() => {
    try {
        const data = await AsyncStorage.getItem("array_notes");
        if (data != null) {
            const array_notes = JSON.parse(data);
            <Notes title = {array_notes[0].title} content = {array_notes[0].content}></Notes>
        }else {
            console.log("with no data");
        }
    }catch (error) {
        console.log(error);
    }
}

注意它保存在另一个文件夹中的组件,因此我必须导入它才能使用它,这里是其代码:

function Notes(props) {
    return (
        <View style = {props.style}>
            <Text>{props.title}</Text>
            <Text>{props.content}</Text>
        </View>
    );
}
export default Notes;

这是完整的代码:

class Create_note extends Component {
    constructor() {
        super();
        this.state = {
            title: "",
            content: "",
            text: "",
        }
        this.show_notes();
    }

    save_Data = async() => {
        try {
            const array_notes = await AsyncStorage.getItem("array_notes");
            if (array_notes === null) {
                const array_notes = [];
                await AsyncStorage.setItem("array_notes", JSON.stringify(array_notes));
            }else {
                const new_note = {'title': this.state.title, 'content': this.state.content};
                const array_notes = await AsyncStorage.getItem("array_notes");
                array_notes.push(new_note);
                await AsyncStorage.setItem("array_notes", JSON.stringify(array_notes));
            }
        }catch(error) {
            console.log(error);
        }
    }

    see_saved_Data = async() => {
        try {
            const data = await AsyncStorage.getItem("array_notes");
            if (data != null) {
                const array_notes = JSON.parse(data);
            }else {
                console.log("no array");
            }
        }catch(error) {
            console.log(error);
        }
    }
    
    show_notes = async() => {
        try {
            const data = await AsyncStorage.getItem("array_notes");
            if (data != null) {
                const array_notes = JSON.parse(data);
                <Notes title = {array_notes[0].title} content = {array_notes[0].content}></Notes>
            }else {
                console.log("with no data");
            }
        }catch (error) {
            console.log(error);
        }
    }

    render() {
        return  (
            <>
            <Text style = {this.styles.Text }>Welcome to Shum Note!</Text>
            <View>
                <TextInput style = {this.styles.TextInput_title} placeholder = "Title" multiline = {true} maxLength = {80} onChangeText = {(title) => this.setState({title: title})}></TextInput>
                <TextInput style = {this.styles.TextInput_content} placeholder = "Content" multiline = {true} onChangeText = {(content) => this.setState({content: content})}></TextInput>
                <Button title = "Save" onPress = {this.save_Data}></Button>
                <Button title = "See saved notes" onPress = {this.see_saved_Data}></Button>
            </View>
            <View style = {this.styles.back_Button}>
                <Button title = "Go back home" onPress = {() => this.props.navigation.navigate("Home")}></Button>
            </View>
            </>    
        );
    }

我想知道如何动态添加组件的原因是什么,所以我不需要写太多代码并将代码分成小块

艾哈迈德·阿布·萨利赫(Ahmad Abou Saleh)

您可以使用FlatList,在获取保存的注释后,将其添加到状态,然后在平面列表中呈现项目,请查看以下示例:

import React, {Component} from 'react';
import{AsyncStorage, View, ScrollView, FlatList} from 'react-native';
import {Text, List} from 'native-base';

class Notes extends Component {

  constructor(props) {

    super(props);

    this.state = {
      notes_array: []
    }

  }

  componentDidMount () {
    this.fetchNotes();
  }
  render () {

    return (
        <ScrollView>
        <View style={{margin: 5, marginTop: 5}}>     
        <List>
            <FlatList
                data={this.state.notes_array}
                renderItem={({item, index}) =>
                <View style={{flex: 1}}>
                        <Text>{item.title}</Text>
                        <Text>{item.content}</Text>
                </View>        
                }
                keyExtractor={(item, index) => index.toString()}
            />
        </List>

        </View> 
        </ScrollView>
    )
  }


async fetchNotes () {

      let notesJSON= await AsyncStorage.getItem('notes_array');
      let notes = JSON.parse(notesJSON);
      const notesArray = notes || [];
      this.setState({
        notes_array: notesArray
      });
  }

}

export default Notes;

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如果条件为真,则动态添加图标

来自分类Dev

如果条件为真,则添加搜索参数

来自分类Dev

如果基于两个相邻行的条件为真,如何添加行以得出结果

来自分类Dev

如果条件为真,则添加HTML元素的Javascript

来自分类Dev

如果多个条件之一为真,如何执行JOIN?

来自分类Dev

如果多个条件为真,如何多次执行迭代?

来自分类Dev

如果条件为真,如何隐藏标题的 div

来自分类Dev

如果第三列为真,如何将列内容添加到新列中 R

来自分类Dev

如果条件被跳过,即使条件为真

来自分类Dev

如果条件为真,则选择数据

来自分类Dev

如果条件为真,则排除文件

来自分类Dev

如果条件为真,则Cobol不进入

来自分类Dev

如果条件为真,则停止功能

来自分类Dev

如果条件总是评估为真

来自分类Dev

如果条件为真,则隐藏元素

来自分类Dev

如果条件为真,则 SQL 过滤行

来自分类Dev

如果使用打字稿的某些条件为真,如何更改添加页边距的底部和页边距右并做出反应?

来自分类Dev

如果为true,则更新,如果为false,则添加新的条件问题

来自分类Dev

如何给定的,如果条件是给在java中真

来自分类Dev

角度:如果条件为真,如何更改单元格表的颜色

来自分类Dev

如果ERB中的条件为真,如何不显示HTML和CSS

来自分类Dev

如果警报条件为真,如何在图表上绘制形状

来自分类Dev

如果我的给定条件为真,如何打开窗口?

来自分类Dev

如果锁定代码部分中的条件为真,如何永久解除锁定?

来自分类Dev

如果条件为真,如何停止while循环以读取文件的每一行?

来自分类Dev

如果我的条件为真,如何在bash脚本中运行多个命令

来自分类Dev

如果条件为真,如何打印 csv 文件的所有行

来自分类Dev

如果 grep 在 r 中为真,如何写入新列

来自分类Dev

如果条件为真,则将 wordpress 帖子更新为草稿

Related 相关文章

  1. 1

    如果条件为真,则动态添加图标

  2. 2

    如果条件为真,则添加搜索参数

  3. 3

    如果基于两个相邻行的条件为真,如何添加行以得出结果

  4. 4

    如果条件为真,则添加HTML元素的Javascript

  5. 5

    如果多个条件之一为真,如何执行JOIN?

  6. 6

    如果多个条件为真,如何多次执行迭代?

  7. 7

    如果条件为真,如何隐藏标题的 div

  8. 8

    如果第三列为真,如何将列内容添加到新列中 R

  9. 9

    如果条件被跳过,即使条件为真

  10. 10

    如果条件为真,则选择数据

  11. 11

    如果条件为真,则排除文件

  12. 12

    如果条件为真,则Cobol不进入

  13. 13

    如果条件为真,则停止功能

  14. 14

    如果条件总是评估为真

  15. 15

    如果条件为真,则隐藏元素

  16. 16

    如果条件为真,则 SQL 过滤行

  17. 17

    如果使用打字稿的某些条件为真,如何更改添加页边距的底部和页边距右并做出反应?

  18. 18

    如果为true,则更新,如果为false,则添加新的条件问题

  19. 19

    如何给定的,如果条件是给在java中真

  20. 20

    角度:如果条件为真,如何更改单元格表的颜色

  21. 21

    如果ERB中的条件为真,如何不显示HTML和CSS

  22. 22

    如果警报条件为真,如何在图表上绘制形状

  23. 23

    如果我的给定条件为真,如何打开窗口?

  24. 24

    如果锁定代码部分中的条件为真,如何永久解除锁定?

  25. 25

    如果条件为真,如何停止while循环以读取文件的每一行?

  26. 26

    如果我的条件为真,如何在bash脚本中运行多个命令

  27. 27

    如果条件为真,如何打印 csv 文件的所有行

  28. 28

    如果 grep 在 r 中为真,如何写入新列

  29. 29

    如果条件为真,则将 wordpress 帖子更新为草稿

热门标签

归档