【发布时间】:2020-12-15 17:54:21
【问题描述】:
如何将一个相对组件通过 props 传递给另一个组件进行渲染?
例如,从 app.js 向组件表传递一个带有带有相对调用的组件按钮的道具,然后像下面的代码一样调用它?有可能吗?
错误
元素类型无效:需要一个字符串(对于内置组件)或一个>类/函数(对于复合组件)但得到:对象。
在 Table.js 组件中
import React from "react";
import { Container } from "./styles";
const Table = ({ data, columns }) => {
return (
<Container>
<thead>
<tr>
{columns.map((header) => {
return <th>{header.text}</th>;
})}
</tr>
</thead>
<tbody>
{data.map((dado) => {
return (
<tr>
{columns.map((column) => {
var { Mask } = column;
console.log(Mask);
return (
<td>
<Mask />
</td>
);
})}
</tr>
);
})}
</tbody>
</Container>
);
};
export default Table;
App.js
import React from "react";
import "./styles.css";
import Table from "./Table";
export default function App() {
const data = [
{ name: "teste", age: 30, place: "brazil", place2: "brazil" },
{ name: "teste", age: 30, place: "brazil", place2: "brazil" },
{ name: "teste", age: 30, place: "brazil", place2: "brazil" }
];
const columns = [
{
dataField: "name",
text: "Nome",
Mask: (
<button
type="button"
onClick={() => {
console.log("Do Something");
}}
>
{data.name}
</button>
)
},
{
dataField: "age",
text: "Idade",
Mask: (
<button
type="button"
onClick={() => {
console.log("Do Something");
}}
>
{data.name}
</button>
)
},
{
dataField: "place",
text: "Localidade",
Mask: (
<button
type="button"
onClick={() => {
console.log("Do Something");
}}
>
{data.name}
</button>
)
},
{
dataField: "place2",
text: "2",
Mask: (
<button
type="button"
onClick={() => {
console.log("Do Something");
}}
>
{data.name}
</button>
)
}
];
return (
<div className="App">
<Table data={data} columns={columns} />
</div>
);
}
【问题讨论】:
-
什么是
Container? -
容器是一个表
-
也许你的意思不是
<Mask />,而是{Mask}? -
@James,tks,工作,但我不知道怎么做才能像孩子们一样做一个属性,你知道怎么做吗?
-
@BrunoHenrique,添加了显示如何修改儿童道具的答案,请查看
标签: javascript reactjs react-native