gpt4 book ai didi

javascript - 不从 React 中的函数渲染 JSX

转载 作者:行者123 更新时间:2023-11-30 13:53:04 25 4
gpt4 key购买 nike

该函数获取按钮点击的值作为 Prop 。映射数据以将该按钮值与数据 JSON 中称为“类”的键进行比较。我正在正确获取所有数据。我所有的 console.logs 都返回正确的值。但出于某种原因,我无法渲染任何东西。

我尝试添加两个返回语句。它甚至没有呈现带有“TEST”一词的 p 标签。我错过了什么吗?我已经包含了一个代码沙箱:https://codesandbox.io/s/react-example-8xxih

例如,当我单击“数学”按钮时,我想将教数学的两位老师显示为按钮下方的两个气泡。 所有数据正在加载。只是在渲染时遇到问题。

function ShowBubbles(props){
console.log('VALUE', props.target.value)
return (
<div id='bubbles-container'>
<p>TEST</p>
{Data.map((item,index) =>{
if(props.target.value == (Data[index].classes)){
return (
<Bubble key={index} nodeName={Data[index].name}>{Data[index].name}
</Bubble>
)

}
})}
</div>
)
}

最佳答案

沙盒链接:https://codesandbox.io/embed/react-example-m1880

import React, {Component} from 'react';
import ReactDOM from 'react-dom';
const circleStyle = {
width: 100,
height: 100,
borderRadius: 50,
fontSize: 30,
color: "blue"
};

const Data = [
{
classes: ["Math"],
name: "Mr.Rockow",
id: "135"
},
{
classes: ["English"],
name: "Mrs.Nicastro",
id: "358"
},
{
classes: ["Chemistry"],
name: "Mr.Bloomberg",
id: "405"
},
{
classes: ["Math"],
name: "Mr.Jennings",
id: "293"
}
];

const Bubble = item => {
let {name} = item.children.singleItem;
return (
<div style={circleStyle} onClick={()=>{console.log(name)}}>
<p>{item.children.singleItem.name}</p>
</div>
);
};

function ShowBubbles(props) {
var final = [];
Data.map((item, index) => {
if (props.target.value == Data[index].classes) {
final.push(Data[index])
}
})
return final;
}

function DisplayBubbles(singleItem) {
return <Bubble>{singleItem}</Bubble>
}

class Sidebar extends Component {
constructor(props) {
super(props);

this.state = {
json: [],
classesArray: [],
displayBubble: true
};
this.showNode = this.showNode.bind(this);
}

componentDidMount() {
const newArray = [];
Data.map((item, index) => {
let classPlaceholder = Data[index].classes.toString();
if (newArray.indexOf(classPlaceholder) == -1) {
newArray.push(classPlaceholder);
}
// console.log('newArray', newArray)
});
this.setState({
json: Data,
classesArray: newArray
});
}

showNode(props) {
this.setState({
displayBubble: true
});

if (this.state.displayBubble === true) {
var output = ShowBubbles(props);
this.setState({output})
}
}
render() {
return (
<div>
{/* {this.state.displayBubble ? <ShowBubbles/> : ''} */}

<div id="sidebar-container">
<h1 className="sidebar-title">Classes At School</h1>

<h3>Classes To Search</h3>

{this.state.classesArray.map((item, index) => {
return (
<button
onClick={this.showNode}
className="btn-sidebar"
key={index}
value={this.state.classesArray[index]}
>
{this.state.classesArray[index]}
</button>
);
})}
</div>
{this.state.output && this.state.output.map(item=><DisplayBubbles singleItem={item}/>)}
</div>
);
}
}

ReactDOM.render(<Sidebar />, document.getElementById("root"));
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/16.0.0/umd/react.production.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react-dom/16.0.0/umd/react-dom.production.min.js"></script>
<div id="root"></div>

关于javascript - 不从 React 中的函数渲染 JSX,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57845634/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com