اذهب إلى المحتوى
  • 0

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

أحمد عبد الله2

السؤال

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

 

اريد الحصول على الداتا الخاصة .. لكن لكى احصل عليها احتاج الى التوكن .. فى البداية يكون التوكن ب 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;

 

تم التعديل في بواسطة أحمد ابراهيم عبد الله
رابط هذا التعليق
شارك على الشبكات الإجتماعية

Recommended Posts

  • 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();

 

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

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...