useState不会在首次渲染时对获取的数据进行初始化

时间:2020-05-05 10:00:38

标签: reactjs react-native react-redux react-hooks

加载此组件时,访存功能应访存数据,并使用reducer将数据存储在存储区中。当我使用useSelector选择该数据并使用useState初始化该值时,它不会在第一个渲染中更新。我希望使用useState来获取和存储数据。请帮我在状态变量中使用useState存储获取的数据,以便在首次渲染时初始化获取的数据。

import { useDispatch, useSelector } from 'react-redux';
import { fetchQA } from '../../store/actions/qp';
import ListQA from '../../components/ListQA';

const QAScreen = props =>{
    subjectId = props.route.params.subjectId;

   const dispatch = useDispatch()



       // fetching the data using dispatch

    useEffect(()=>{
        dispatch(fetchQA(subjectId))
    },[dispatch]);

    const selectedQuestions = useSelector(state => state.qa.questionAndAnswers);

    **const [userTestDetails,setUserTestDetails] = useState(selectedQuestions);**



    return(<View>
        <Text> welcome to QA Screen</Text>
        <FlatList   **data={userTestDetails}** // not updating on initial render
                    keyExtractor={item=>item.questionId}
                    renderItem={itemData => <ListQA data={itemData.item} index={itemData.index} />}
        />
    </View>
    )
}

1 个答案:

答案 0 :(得分:0)

您无需将从redux获得的数据存储到状态中,除非您想进行一些本地操作,否则可以直接使用该值

<Modal open={this.props.show} little showCloseIcon={true} styles={modalStyles} onClose={this.props.onModalClose}> //rename your prop function to onModalClose//

此外,由于您要调度一个在reducer中获取和更新数据的操作,因此,您将不会立即拥有数据是正确的,如果您完全希望更新状态,则需要使用{{ 1}}

x = 6
list = {
    ('bad', 0, 0),
    ('good', 10, 10),
    ('ugly', 20, 20),
    ('bullets:', 5, 30),
    (str(x), 70, 30)
    }
for i in list:
    oled.text(i[0], i[1], i[2])