这可能是一个noob反应问题(仍在学习(,我有这个常数:
const data = {
first_name: "John",
last_name: "smith",
employee: "Google"
};
我传递给另一个函数。这是可行的,但我想把它移到自己的文件中,使它更通用。如果我将其移动到person-data.js
:
import React, { useEffect } from "react";
const PersonData = props => {
const data = {
first_name: "John",
last_name: "smith",
employee: "Google"
};
return (
{data}
);
};
export default PersonData;
在我的主要组成部分:
import person from '../person-data'
.....
// temp to test
const data = {
first_name: "John",
last_name: "smith",
employee: "Google"
};
.....
somefunction(person) // doesnt work
somefunction(data) // works
它不再有效,我想移动它的原因是这样我就可以使用道具动态传递信息。这是一个好方法吗?
它不起作用,因为您使用析构函数语法返回对象,而没有将data
对象扩展到新对象中。
尝试:
const PersonData = props => {
const data = {
first_name: "John",
last_name: "smith",
employee: "Google"
};
return {...data} // or just: return data
};
export default PersonData;
import person from '../person-data'
.....
// temp to test
const data = {
first_name: "John",
last_name: "smith",
employee: "Google"
};
.....
somefunction(person())
按照上面代码中的方式,您将返回一个形式为的对象
{
data: {
first_name: 'John',
last_name: 'smith',
...
}
}
因此,例如,您必须查找PersonData(props).data.first_name
才能获得您的名字。
const personData = {
first_name: "John",
last_name: "smith",
employee: "Google"
};
export default personData;
您可以导出常量。它不需要在组件中。如果你想更改这些值,你可以创建一个函数。例如
function getPersonData(firstName) {
return {
first_name: firstName,
last_name: "smith",
employee: "Google"
};
}
如果我理解你的意思,你要做的就是创建一个包含以下内容的文件personData.js:
const personData = {
first_name: "John",
last_name: "Smith",
employee: "Google"
};
export default personData;
然后在需要的地方导入以前的文件
import personData from './personData.js';
您可以在需要的地方访问personData.first_name、personData.last_name和personData.employe。
您需要从那里export
这个文件,并在组件中import
。
CODESANDBOX工作演示:https://codesandbox.io/s/upbeat-cookies-hdeiw?file=/src/PersonData.js
person-data.js文件:
const data = {
first_name: "John",
last_name: "smith",
employee: "Google"
};
export default data;
现在在你的组件导入它。
import React, { useState, useEffect } from "react";
import personData from "./person-data.js"; // Provide your relative path
const PersonData = (props) => {
const [data, setData] = useState(personData);
return (
<>
<div>
<p>{data.first_name}</p>
<p>{data.last_name}</p>
<p>{data.employee}</p>
</div>
</>
);
};
export default PersonData;