javascript - 如何在 React 中将数组作为结果从一个功能组件传递到另一个功能组件
问题描述
我想将存储在const mappedData
from中的数据传递FetchDataComponent.js
给ReactSelectComponent.js
. 有没有办法用功能组件做到这一点?有了我得到的代码Error: Objects are not valid as a React child
FetchDataComponent.js
import React,{useState, useEffect} from "react";
import axios from "axios";
import _ from "lodash";
const FetchDataComponent = () => {
const [data, setData] = useState({product: []})
useEffect(
() => {
(async () => {
const result = await axios.get(
'/products-data'
)
setData(result.data)
})()
}, [])
console.log("data.product:")
console.log(data.product)
const mappedData = _.map(data.product, "proizvod_naziv")
console.log("mappedData:")
console.log(mappedData)
console.log(typeof mappedData)
return ({mappedData});
}
export default FetchDataComponent;
反应选择组件.js
import React, {useState} from "react";
import Select from "react-select";
const ReactSelectComponent = () => {
// place for data from FetchDataComponent.js
const options = [
{
// value: ,
// label:
},
{value: 'strawberry', label: 'Strawberry'},
{value: 'vanilla', label: 'Vanilla'}
]
return (<Select options={options}/>)
}
export default ReactSelectComponent;
控制台.log(映射数据):
(3) […]
0: "M-Z-8Nm"
1: "M-P-10Nm"
2: "V-H"
length: 3
<prototype>: Array []
控制台.log(映射数据类型):
object
解决方案
FetchDataComponent
不是真正的反应组件,因为它不渲染任何东西。它看起来更像是自定义钩子。要使它成为一个钩子,只需使其成为调用其他钩子的简单函数:
const useFetchedData = () => {
const [data, setData] = useState({ product: [] })
useEffect(
() => {
(async () => {
const result = await axios.get(
'/products-data'
)
setData(result.data)
})()
}, [])
const mappedData = _.map(data.product, "proizvod_naziv")
return mappedData
}
export default useFetchedData;
现在您可以使用该钩子的返回值来获取您想要的数据并将其传递给其他组件。
const ReactSelectComponent = () => {
const mappedData = useFetchedData()
const options = mappedData.map(value => ({ value, label: value }))
return (<Select options={options}/>)
}
export default ReactSelectComponent;
推荐阅读
- android - 如何在 Android 上使用 RGB_565 从 ByteBuffer 获取像素的 RGB
- apache-spark - 在 pyspark 数据框中删除连续重复项
- bash - Folder for Release build does not get created when publishing .NET Core
- c# - Entity Framework Core Conditional Where 语句关于 Post 变量
- json - 如何在 Node js + Express (API) 中将 json TIS-620 响应为 UTF-8
- java - 使用 Tomcat Embedded 和 Maven 启动应用程序
- javascript - 如何使用 react-native-tab-view 显示动态选项卡?
- node.js - 在没有字符串连接的情况下将记录数组传递给`node-postgres`中的Postgres?
- java - 使用java从服务器端的URL中提取参数
- c# - 如何实现只能设置一次的属性