인프런 커뮤니티 질문&답변

승현님의 프로필 이미지
승현

작성한 질문수

처음 배우는 리액트 네이티브

기능 구현하기 - 추가

ReferenceError: Can't find variable: Data

작성

·

1.5K

0

import React, { useState } from 'react';
import { StatusBar, Dimensions } from 'react-native';
import styled, {ThemeProvider} from 'styled-components/native';
import {theme} from './theme';
import Input from './components/Input';
import Task from './components/Task';

const Container = styled.SafeAreaView`
flex: 1;
background-color: ${({theme}) => theme.background};
align-items: center;
justify-content: flex-start; /* 타이틀이 상단에 나타나도록 justify-content의 값을 flex-start;로 지정해준다. */
`;

const Title = styled.Text`
font-size: 40px;
font-weight: 600;
color: ${({theme}) => theme.main};
width: 100%;
align-items: flex-end;
padding: 0 20px;
`;
/* styled components를 이용해서 Title이라는 이름에 새로운 컴포넌트를 만드는 작업이다.
font-size와 font-weight 그리고 글자 color를 설정해주는데 글자 color는 theme.js에 정의해놓은 main을 가져와서 사용할것이다.
가로(width)는 전체를 차지하게하고, 글자를 왼쪽(align-items: flex-end;)에서부터 하도록한다.
화면의 끝에 바짝붙지않도록 padding을 주어서 약간 떨어지게 설정을한다. */

const List = styled.ScrollView`
flex: 1;
width: ${({ width }) => width -40}px;
`;

export default function App() {
const width = Dimensions.get('window').width;

const tempData = {
1: { id: '1', text: 'React Native', completed: false },
2: { id: '2', text: 'Expo', completed: true },
3: { id: '3', text: 'JavaScript', completed: false },
};
const [tasks, setTasks] = useState(tempData);

const [newTask, setNewTask] = useState('');

const addTask = () => {
const ID = Data.now().toString();
const newTaskObject ={
[ID] : {id: ID, text: newTask, completed: false },
};
setNewTask('');
setTasks({...tasks, ...newTaskObject});
};

return (
<ThemeProvider theme={theme}>
<Container>
<StatusBar
style="light-content"
backgroundColor={theme.background}
/>
<Title>TODO List</Title>
<Input
placeholder="+ Add a Task"
value={newTask}
onChangeText = {text => setNewTask(text)}
onSubmitEditing={addTask}
/>
<List width = {width}>
{Object.values(tasks)
.reverse()
.map(item => (
<Task key={item. id} text={item.text} />
))}
</List>
</Container>
</ThemeProvider>
);
}
강의에 나오는것과 똑같이 했는데 +Add a Task에 글자입력하고
enter를 누르면 오류가 나오네요ㅠㅠ

답변 1

1

김범준님의 프로필 이미지
김범준
지식공유자

안녕하세요 승현님, 

  

대부분의 에러는 에러 메시지에서 문제점을 찾을 수 있습니다. 
Data 라는 변수를 찾을 수 없다는 에러메시지이니 Data라는것이 사용된 곳에서 문제의 원인을 찾으면 됩니다. 

    

const addTask = () => { 
    const ID = Data.now().toString();

이라고 오타가 있네요. 
Date.now().toString() 으로 변경하시기 바랍니다. 

  

강의를 천천히 보면서 확인하거나,
깃헙에 있는 강의 코드(link)와 비교를 하면서 확인하면 조금 더 쉽게 문제점을 찾을 수 있습니다. 

  

질문을 할때는 작업중인 코드를 깃헙에 올리고,
깃헙의 주소와 문제가 되는 상황에 대한 상세한 설명을 함께 남겨주세요. 

    

즐거운 하루 되세요
감사합니다. 

 

승현님의 프로필 이미지
승현
질문자

감사합니다:)

승현님의 프로필 이미지
승현

작성한 질문수

질문하기