• 0

كيف اصل الى ثابت داخل الفانكشن const حتى استطيع استخدامه خارج الفانكشن ؟

عندى فى هذا الكود مشكلة 

 

اريد الحصول على الداتا الخاصة .. لكن لكى احصل عليها احتاج الى التوكن .. فى البداية يكون التوكن ب null لذا فان الداتا لا تاتى لان التوكن ب null .. انا اريد طريقة اخرى لكى استطيع استخراج التوكن من الفانكشن بدلا من  use state لاننى فى use state مجبر على وضع قيمة ابتدائية ل token  .. مالحل ؟؟

لمن لم يفهمنى سوف اقول السؤال ببساطة .. 

أنا اريد ان اخرج قيمة التوكن المخزنة فى getToken فانشكن .. واستخراجه وتخزينه فى  const ..

import React, {useEffect, useState} from 'react';
import {View, Text, FlatList, Button} from 'react-native';
import {useDispatch, useSelector} from 'react-redux';
import {logout} from '../../store/actions/auth';
import {getSessions} from '../../store/actions/sessions';
import AsyncStorage from '@react-native-async-storage/async-storage';

function LearningSessions(props) {
  const [token, setToken] = useState(null);
  const getToken = async () => {
    try {
      const userToken = await AsyncStorage.getItem('userToken');
      if (userToken !== null) {
        setToken(userToken);
        console.log('the token is ' + token);
      }
    } catch (e) {
      console.log('the token is nulllllllllll');
      console.log(e.message);
    }
  };

  useEffect(() => {
    getToken();
    dispatch(getSessions(token, 1));
  }, []);

  const data = useSelector(state => state.sessionsReducer.data);
  const dispatch = useDispatch();
  console.log(data);

  // if (token == !null) {
  return (
    <View>
      <Text>جلسات التعلم</Text>
      <Button title="logout" onPress={() => dispatch(logout())} />

      <FlatList
        data={data}
        keyExtractor={item => item.id.toString()}
        renderItem={({item}) => (
          <View style={{padding: 30, backgroundColor: 'yellow', margin: 15}}>
            <Text>{item.content} جلسة:</Text>
            <Text>{item.reading_type.name}</Text>
            <Text>{item.teacher_name}</Text>
            <Text>{item.status_text}</Text>
            <Text>{item.rate_text}</Text>
            <Text>{item.session_start_date}</Text>
          </View>
        )}
      />
    </View>
  );
  // }
  // return <Text>انتظر ...</Text>;
}

export default LearningSessions;

 

تمّ تعديل بواسطة أحمد ابراهيم عبد الله

انشر على الشّبكات الاجتماعية


رابط هذه المساهمة
شارك على الشبكات الإجتماعية
  • 0
 const getToken = async () => {
    try {
      const userToken = await AsyncStorage.getItem('userToken');
      if (userToken !== null) {
        setToken(userToken);
        console.log('the token is ' + token);
        return userToken; //قم بارجاعه هنا
      }
    } catch (e) {
      console.log('the token is nulllllllllll');
      console.log(e.message);
    }
  };

ثم في اي مكان يمكنك

const token = getToken();

 

انشر على الشّبكات الاجتماعية


رابط هذه المساهمة
شارك على الشبكات الإجتماعية

يجب أن تكون عضوًا لدينا لتتمكّن من التعليق

انشاء حساب جديد

يستغرق التسجيل بضع ثوان فقط


سجّل حسابًا جديدًا

تسجيل الدخول

تملك حسابا مسجّلا بالفعل؟


سجّل دخولك الآن