abdurrahmanekr / bana-istedigini-sor

Yeni paylaştığım yazılardan haberdar olmak için bloguma abone olun:
https://avarekodcu.com
12 stars 1 forks source link

constructor'den önce componentWillMount çalıştırmak ? #48

Closed sercanyeniyurt closed 6 years ago

sercanyeniyurt commented 6 years ago

Merhabalar ben, react-native kodlarımda socket bağlantısı yapıyorum fakat bu socket bağlantısından önce ip adresini sormam gerekiyor, gelen ip adresini state e yazdıktan sonra o sayfanın çalışmasını istiyorum ki socket çalışabilsin, kodum aşağıda ki gibi;

constructor (props) {
        super(props);
        this.state = {
            dataSource: this.ds,
            data: null,
            loaded: false,
            modal: null,
            server: null
        };
        this.socket = SocketIOClient(this.state.server+':8080');
    }
    componentWillMount(){
        serverData().then((server) => {
            this.setState({
                server: server
            });
        });
        this.fetchData();
    }

constructor methodu en başta çalıştığı için state değişmeden socket bağlanmaya çalışıyor ve bağlanmıyor, önce state i değiştirip sonra socket bağlantısını yapmak istiyorum nasıl yapabilirim ?

abdurrahmanekr commented 6 years ago

Merhaba, this.socket = SocketIOClient(this.state.server+':8080'); işlemini componentWillMount üzerinde yapsanız bir sorun olur mu? yani:

componentWillMount(){
    var self = this;
    serverData().then((server) => {
        self.setState({
            server: server
        }, () => { // state güncellendikten sonra çalışır
            self.socket = SocketIOClient(self.state.server+':8080');
        });
    });
}
sercanyeniyurt commented 6 years ago

Merhabalar, ben fetchData fonksiyonu içinde yaptım bunu serverData fonksiyonundan gelen server değerini fonksiyon içersinde fetchdata ya gönderdim yani this.fetchData(server); diyerek socketi de fetchdata fonksiyonunda açdım bu şekilde çözüldü. Verdiğiniz örnek de denenebilir teşekkür ederim.