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

السؤال

نشر (معدل)

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

 

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

  • إعلانات

  • تابعنا على



×
×
  • أضف...