reactjs - 将异步结果从父组件传递到子组件 react 功能组件

标签 reactjs react-redux rxjs react-hooks react-router

我有一个功能组件,旨在搜索任务并在任务结果框中显示,异步任务数据通过 useState Hook 设置并传递给子组件“TaskResultBox”。状态没有改变,值也没有呈现到子组件中。我已经使用调试验证了从 API 检索到的值。但不重新呈现子组件中的数据。

import React from 'react'
import {useState} from 'react'


function SearchTask({onAddTask}) {
    const [searchInputValue, setSearchInputValue] = useState('');
    const [tasks, setTasks] = useState('');
 
    const getTasks = () => {
        return tasks;
    };
    const onSearchInputValueChange = (e) => {
        setSearchInputValue(e.target.value);
    };
    const onSearch = async(e) => {
        const theRequestOpts = {
            method: 'POST',
            headers: { 'Content-Type': 'application/json' },
            body: JSON.stringify({ searchString: searchInputValue })
        };
        const response = await fetch('/api/searchTasks', theRequestOpts);
        const data = await response.json();
        setTasks(data);
    };
    return (
        <InputBox onSearchInputValueChange={onSearchInputValueChange}/>
        <Button title="Search Tasks:" onClick={onSearch}/>
        <TaskResultBox taskResults={getTasks}/>
    )
}

export default SearchTask

//TaskTesultBox.js

import React from 'react'
function TaskResultBox({taskResults}) {
    return (
        <div>
            <h1>Task Result:</h1>
            <textarea value={taskResults}/>
        </div>
    )
}

export default TaskResultBox

最佳答案

getTasks 是一个返回 tasks 对象的函数,因此要获取返回变量,您需要调用它

所以改为:

<TaskResultBox taskResults={getTasks()}/>  //<-- Invoke it

但我想知道为什么你需要一个函数来返回那个变量而不是直接把它放到 props 中?

像这样:

<TaskResultBox taskResults={tasks}/>

关于reactjs - 将异步结果从父组件传递到子组件 react 功能组件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69127119/

相关文章:

javascript - React JSX 动态 SVG 转换错误

css - 如何在 material-ui 卡组件中获得相同的宽度?

javascript - 在formik中,速记输入字段不起作用

javascript - 如何在react.js中向按钮添加两个操作

javascript - 在浅层渲染的功能组件上调用 instance() 返回 null

javascript - react 处理表单提交

react-native - 如何解决 react-native-paper 和 Redux 中的这个错误?

javascript - 在 Angular 中读取对象内的数组

javascript - 在 RxJS 中是否可以在 auditTime() 操作中测试未决值?

javascript - RxJS:如何用 nock 测试 Observable.ajax() ?