我是本机反应的新手。我想问一下两者之间有什么区别
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
}
但这给我一个错误
答案 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
}
这只是一个示例,但是您可以在印刷时向该文本传递一个动态参数,这将在父组件中设置状态,因此您可以在父组件中随意使用该数据。