为了账号安全,请及时绑定邮箱和手机立即绑定

TypeError:未定义不是一个对象在React Native中评估'addTodo

TypeError:未定义不是一个对象在React Native中评估'addTodo

潇湘沐 2023-07-14 15:01:14
我收到异常 TypeError: undefined is not an object (evaluating 'addTodo(title, description).then') 该函数工作正常并且状态更新正常,但它没有按预期工作。添加Todo.js:import { useNavigation } from '@react-navigation/native';import React , {useContext, useState} from 'react';import { View } from 'react-native';import { Input , Button} from 'react-native-elements';import { TextInput } from 'react-native-gesture-handler';import {cardContext} from '../contextApi/cardContext';const NewTodoInput = () =>{const { addTodo } = useContext(cardContext);const navigation = useNavigation();const [title , setTitle] = useState()const [description , setDescription] = useState()const handleOnSubmit = ()=>{        addTodo(title,description)    .then((data)=>{        navigation.navigate('TodoApp');        console.log('Added Succesfully : ' + data);    })    .catch((e)=>{console.log(e)});}return (    <View>    <Input     placeholder = 'Title'    onChangeText= {(val)=>{setTitle(val)}}    />    <Input     placeholder = 'Your todo'    multiline = {true}    onChangeText = {(val) => {setDescription(val)}}    />    <Button         buttonStyle= {{backgroundColor : 'black'}}        title = 'Submit'        onPress = {handleOnSubmit}                    />    </View>)}export default NewTodoInput ;上下文.jsimport React , {createContext, useState} from 'react'export const cardContext = createContext();const Data = (props) =>{    const [data , setData] = useState(        //todo Add id to the data        [            {title : 'This is title 1' , Description : 'this is description 1'},            {title : 'This is title 2' , Description : 'this is description 2'},            {title : 'This is title 3' , Description : 'this is description 3'},            {title : 'This is title 4' , Description : 'this is description 4'},        ]            ) 
查看完整描述

1 回答

?
慕妹3242003

TA贡献1824条经验 获得超6个赞

如果您想更改 addTodo 以使其返回评论中所述的承诺,那么这里是:


const addTodo = (title , description) =>{

   setData( [...data , {title : title, Description : description}] )

   return new Promise((resolve, reject) => {

       resolve("data") // Do something here preferable what you need inside .then()

                      })

}


查看完整回答
反对 回复 2023-07-14
  • 1 回答
  • 0 关注
  • 101 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信