什么是差异状态和构造函数?

时间:2019-02-15 06:36:17

标签: react-native

我是本机反应的新手。我想问一下两者之间有什么区别

state = {

}

 constructor(props){
        super(props)
        this.state = ''
    }

我将数据从父类发送到子类,例如<child value={} />

但是我无法从孩子向父母发送数据吗?我试图这样发送:

 <Text onPress={() => this.props.navigation.navigate('Parent',{deneme: 'abc'})}  ></Text>

在父类中,我有

state = {
deneme : this.props.navigation.params.deneme
}

但这给我一个错误

1 个答案:

答案 0 :(得分:1)

对于您的第一个问题,class field proposal只是语法糖(使写/读更好的语法),但是可以编译为同一东西,因此两个版本在本质上是等效的。我会坚持写得更容易:

import { Injectable } from '@angular/core';
import { Platform } from 'ionic-angular';
import { Http, Headers, RequestOptions } from '@angular/http';  
import { UrlServiceProvider } from '../url-service/url-service';
import { Firebase } from '@ionic-native/firebase';
import { AngularFirestore } from 'angularfire2/firestore';

@Injectable()
export class FcmServiceProvider {

 constructor(public http: Http,public urlService : UrlServiceProvider, 
private firebase: Firebase,
private afs: AngularFirestore,
private platform: Platform) {
console.log('Hello TokenServiceProvider Provider');
}


saveToken(credentials,token) {
var data = {};

return new Promise((resolve, reject) => {
    data = {
        'userid' : credentials,
        'devicetoken' : token,
        'usertype':'1'
    };
    console.log("Sirius Token Token Device : "+localStorage.getItem('devicetoken'));
    console.log("Sirius Save Device Token Inside : "+JSON.stringify(data));
    let apiUrl = this.urlService.apiUrl  + 'devicetoken';
    this.http.post(apiUrl,data)
      .subscribe(res => {
          console.log("Sirius Save Device Token Inside : "+JSON.stringify(res));
              console.log(JSON.parse(JSON.stringify(res)));

         resolve(JSON.parse(JSON.stringify(res)));
      }, (err) => {
        console.log("Sirius Save Device Token : "+JSON.parse(JSON.stringify(err)));
        reject(err);
      });
});
}

对于第二个问题,要将数据“发送”到父组件,最常见的方法是让父组件也传递一个方法作为道具,当子调用该方法时,它将在状态中设置状态。父组件以将“数据”存储在父组件中。

例如:

因此,在父组件中,您应该初始化state属性,该属性将保存您希望子组件发送的“数据”:

state = {
}

然后设置一个方法并将其传递给可以设置此state属性状态的子组件:

state = {
   myData: '' // default it to string, array, object, whatever your 
              // eventual data type would be
}

这只是一个示例,但是您可以在印刷时向该文本传递一个动态参数,这将在父组件中设置状态,因此您可以在父组件中随意使用该数据。