Javascript 如何在选项卡中呈现react组件?
在这里,如何在名为“选定行星”的选项卡中仅显示“ListSelected”组件,而在名为“Planets List”选项卡中显示其余整个组件(FetchPlanets)。如何仅在不同选项卡中呈现“ListSelected”组件,而在不同选项卡中呈现其余整个组件(“FetchPlanets”)?因此,它不应该刷新作为道具传递的选定行星 fetchplants.jsxJavascript 如何在选项卡中呈现react组件?,javascript,reactjs,tabs,react-tabs,Javascript,Reactjs,Tabs,React Tabs,在这里,如何在名为“选定行星”的选项卡中仅显示“ListSelected”组件,而在名为“Planets List”选项卡中显示其余整个组件(FetchPlanets)。如何仅在不同选项卡中呈现“ListSelected”组件,而在不同选项卡中呈现其余整个组件(“FetchPlanets”)?因此,它不应该刷新作为道具传递的选定行星 fetchplants.jsx 从“React”导入React; 从“react bootstrap”导入{ListGroup,Container}; 导入“/co
从“React”导入React;
从“react bootstrap”导入{ListGroup,Container};
导入“/components.css”;
导入从“/ListSelected”中选择的列表;
导出默认类FetchReact.Component{
建造师(道具){
超级(道具);
此.state={
加载:对,
行星:空,
选定行星:[]
};
}
异步组件didmount(){
const url=“asdf”;
const res=等待获取(url);
const data=wait res.json();
this.setState({planets:data,load:false});
console.log(this.state.planets);
}
fetch=e=>{
常量数据=this.state.selectedPlanets;
data.push(例如target.innerText);
这是我的国家({
选定行星:数据
});
};
render(){
const splanets=this.state.selectedPlanets.map(函数(项){
返回{item} ;
});
返回(
{this.state.loading | | |!this.state.plants(
加载。。。
) : (
{this.state.planets.map((planetnames,index)=>{
返回(
{
这是fetch(e);
}}
className=“selectlg”
>
{planetnames.id}
);
})}
)}
);
}
}
您可以使用此示例将内容分为多个选项卡:
代码如下:
import React, { Component } from 'react';
import { render } from 'react-dom';
import Tabs from "./Tabs";
import Tab from "./Tab";
import './style.css';
class App extends Component {
render() {
return (
<Tabs>
<Tab value="banana" header="Banana Header">
Banana
</Tab>
<Tab value="apple" header="Apple Header">
Apple
</Tab>
</Tabs>
);
}
}
render(<App />, document.getElementById('root'));
import React,{Component}来自'React';
从'react dom'导入{render};
从“/Tabs”导入选项卡;
从“/Tab”导入选项卡;
导入“/style.css”;
类应用程序扩展组件{
render(){
返回(
香蕉
苹果
);
}
}
渲染(看起来很适合您的需要。使用起来会更方便,看看:
import { Tab, Tabs, TabList, TabPanel } from 'react-tabs';
import 'react-tabs/style/react-tabs.css';
export default () => (
<Tabs>
<TabList>
<Tab>Title 1</Tab>
<Tab>Title 2</Tab>
</TabList>
<TabPanel>
<h2>Any content 1</h2>
</TabPanel>
<TabPanel>
<h2>Any content 2</h2>
</TabPanel>
</Tabs>
);
从'react Tabs'导入{Tab,Tabs,TabList,TabPanel};
导入“react tabs/style/react tabs.css”;
导出默认值()=>(
标题1
标题2
任何内容1
任何内容2
);
[编辑]:我想我终于得到了您想要做的事情。因此,您需要让您的父级中选定的行星能够将其作为PRP传递给您的SelectedList组件。您必须将列表设置为父级状态,如下所示:
import React, { Component } from "react";
import { render } from "react-dom";
import Hello from "./Hello";
import "./style.css";
const App = () => {
const [selectedPlanets, setSelectedPlanets] = React.useState([]);
return (
<div>
<div className="tab-1">
<FetchPlanets setSelectedPlanets={setSelectedPlanets} />
</div>
<div className="tab-2">
<SelectedPlanets planets={selectedPlanets} />
</div>
</div>
);
};
const FetchPlanets = ({ setSelectedPlanets }) => {
const planets = ["Mars", "Uranus", "Earth", "Jupiter"];
React.useEffect(() => {
const selectedPlanets = [];
planets.forEach(p => {
if (p === "Mars" || p === "Jupiter") selectedPlanets.push(p); // Arbitrarily selected planets for the example
});
setSelectedPlanets(selectedPlanets);
}, []);
return (
<div>
{planets.map(p => (
<span>{p} </span>
))}
</div>
);
};
const SelectedPlanets = ({ planets }) => (
<div>
{planets.map(p => (
<span>{p} </span>
))}
</div>
);
render(<App />, document.getElementById("root"));
import React,{Component}来自“React”;
从“react dom”导入{render};
从“/Hello”导入Hello;
导入“/style.css”;
常量应用=()=>{
常量[selectedPlanets,setSelectedPlanets]=React.useState([]);
返回(
);
};
const FetchPlanets=({setSelectedPlanets})=>{
恒常行星=[“火星”、“天王星”、“地球”、“木星”];
React.useffect(()=>{
const selectedPlanets=[];
行星。forEach(p=>{
如果(p==“火星”| | p==“木星”)选择了行星。按(p);//以任意选择的行星为例
});
设置选定行星(选定行星);
}, []);
返回(
{行星地图(p=>(
{p}
))}
);
};
const SelectedPlanets=({planets})=>(
{行星地图(p=>(
{p}
))}
);
渲染(您可以使用此示例将内容分隔为多个选项卡:
代码如下:
import React, { Component } from 'react';
import { render } from 'react-dom';
import Tabs from "./Tabs";
import Tab from "./Tab";
import './style.css';
class App extends Component {
render() {
return (
<Tabs>
<Tab value="banana" header="Banana Header">
Banana
</Tab>
<Tab value="apple" header="Apple Header">
Apple
</Tab>
</Tabs>
);
}
}
render(<App />, document.getElementById('root'));
import React,{Component}来自'React';
从'react dom'导入{render};
从“/Tabs”导入选项卡;
从“/Tab”导入选项卡;
导入“/style.css”;
类应用程序扩展组件{
render(){
返回(
香蕉
苹果
);
}
}
渲染(看起来很适合您的需要。使用起来会更方便,看看:
import { Tab, Tabs, TabList, TabPanel } from 'react-tabs';
import 'react-tabs/style/react-tabs.css';
export default () => (
<Tabs>
<TabList>
<Tab>Title 1</Tab>
<Tab>Title 2</Tab>
</TabList>
<TabPanel>
<h2>Any content 1</h2>
</TabPanel>
<TabPanel>
<h2>Any content 2</h2>
</TabPanel>
</Tabs>
);
从'react Tabs'导入{Tab,Tabs,TabList,TabPanel};
导入“react tabs/style/react tabs.css”;
导出默认值()=>(
标题1
标题2
任何内容1
任何内容2
);
[编辑]:我想我终于得到了您想要做的事情。因此,您需要让您的父级中选定的行星能够将其作为PRP传递给您的SelectedList组件。您必须将列表设置为父级状态,如下所示:
import React, { Component } from "react";
import { render } from "react-dom";
import Hello from "./Hello";
import "./style.css";
const App = () => {
const [selectedPlanets, setSelectedPlanets] = React.useState([]);
return (
<div>
<div className="tab-1">
<FetchPlanets setSelectedPlanets={setSelectedPlanets} />
</div>
<div className="tab-2">
<SelectedPlanets planets={selectedPlanets} />
</div>
</div>
);
};
const FetchPlanets = ({ setSelectedPlanets }) => {
const planets = ["Mars", "Uranus", "Earth", "Jupiter"];
React.useEffect(() => {
const selectedPlanets = [];
planets.forEach(p => {
if (p === "Mars" || p === "Jupiter") selectedPlanets.push(p); // Arbitrarily selected planets for the example
});
setSelectedPlanets(selectedPlanets);
}, []);
return (
<div>
{planets.map(p => (
<span>{p} </span>
))}
</div>
);
};
const SelectedPlanets = ({ planets }) => (
<div>
{planets.map(p => (
<span>{p} </span>
))}
</div>
);
render(<App />, document.getElementById("root"));
import React,{Component}来自“React”;
从“react dom”导入{render};
从“/Hello”导入Hello;
导入“/style.css”;
常量应用=()=>{
常量[selectedPlanets,setSelectedPlanets]=React.useState([]);
返回(
);
};
const FetchPlanets=({setSelectedPlanets})=>{
恒常行星=[“火星”、“天王星”、“地球”、“木星”];
React.useffect(()=>{
const selectedPlanets=[];
行星。forEach(p=>{
如果(p==“火星”| | p==“木星”)选择了行星。按(p);//以任意选择的行星为例
});
设置选定行星(选定行星);
}, []);
返回(
{行星地图(p=>(
{p}
))}
);
};
const SelectedPlanets=({planets})=>(
{行星地图(p=>(
{p}
))}
);
渲染(您需要制作两个不同的组件来列出行星和选定的行星。
这就是app.js的样子
import React from "react";
import "./styles.css";
import FetchPlanets from "./components/FetchPlanets";
import ListSelected from "./components/ListSelected";
import { Tabs, Tab } from "react-bootstrap";
import "bootstrap/dist/css/bootstrap.min.css";
export default function App() {
const [selectedPlanet, setSelectedPlanet] = React.useState([]);
return (
<div className="App">
<Tabs defaultActiveKey="planet" id="uncontrolled-tab-example">
<Tab eventKey="planet" title="Planets">
<FetchPlanets updatePlanets={e => setSelectedPlanet([...e])} />
</Tab>
<Tab eventKey="list" title="Selected">
<ListSelected selp={selectedPlanet} />
</Tab>
</Tabs>
</div>
);
}
import React from "react";
import { ListGroup, Container } from "react-bootstrap";
import "./components.css";
export default class FetchPlanets extends React.Component {
constructor(props) {
super(props);
this.state = {
loading: true,
planets: null,
selectedPlanets: []
};
}
async componentDidMount() {
const url = "https://assignment-machstatz.herokuapp.com/planet";
const res = await fetch(url);
const data = await res.json();
this.setState({ planets: data, loading: false });
console.log(this.state.planets);
}
fetch = e => {
const data = this.state.selectedPlanets;
if (!data.includes(e.target.innerText)) {
data.push(e.target.innerText);
this.setState(
{
selectedPlanets: data
},
() => {
this.props.updatePlanets(this.state.selectedPlanets);
}
);
}
};
render() {
return (
<Container fluid>
{this.state.loading || !this.state.planets ? (
<div>Loading...</div>
) : (
<ListGroup>
{this.state.planets.map((planetnames, index) => {
return (
<ListGroup.Item
key={index}
onClick={e => {
this.fetch(e);
}}
className="selectlg"
>
{planetnames.id}
</ListGroup.Item>
);
})}
</ListGroup>
)}
</Container>
);
}
}
从“React”导入React;
导入“/styles.css”;
从“/components/FetchPlanets”导入FetchPlanets;
导入从“/components/ListSelected”中选择的列表;
从“react bootstrap”导入{Tabs,Tab};
导入“bootstrap/dist/css/bootstrap.min.css”;
导出默认函数App(){
const[selectedPlanet,setSelectedPlanet]=React.useState([]);
返回(
设置选定计划