我目前正在学习 React-native。我正在关注 Pluralsight 教程,但不幸的是他的一些代码已经过时了。我有以下代码:
import Expo from 'expo';
import React from 'react';
import TaskList from './TaskList';
import {
Component,
View,
Navigator,
Text
} from 'react-native';
class todo extends React.Component {
constructor(props,context){
super(props,context);
this.state ={
todos: [
{
task: 'Task1',
},
{
task: 'Task 2',
},
]
}
}
onAddStarted(){
this.nav.push({
name: 'taskform',
})
}
renderScene(route,nav){
switch(route.name){
case 'taskform':
return (
<Text>Add form comes here!</Text>
);
default:
return(
<TaskList onAddStarted={this.onAddStarted}
todos={this.state.todos}/>
);
}
}
render() {
return (
<Navigator initialRoute={{name: 'Tasklist'}}
ref={((nav)=> {
this.nav=nav;
})}
renderScene={this.renderScene}/>
);
}
}
Expo.registerRootComponent(todo);
我的问题是这条线:
todos={this.state.todos}/>
如果我记录 this.state 它错误并且状态未定义。如果我内联复制 todos 的内容,代码会编译,所以我知道它在范围界定方面存在一些问题,但我想我从根本上不明白如何正确地做到这一点。在我开始使用 Navigator 之前,我完全可以从构造函数中引用 this.state。
如果有人可以帮助我理解,我会很高兴。
谢谢!