【发布时间】:2021-11-18 19:03:43
【问题描述】:
我正在构建一个简单的议程组件,但遇到了问题。这个想法是,当一个人点击这一天,然后看到这一天的培训。我的逻辑如下
- 点击按钮时,我将状态设置为日期 ID
- 在现有活动项上三元运算符呈现组件
- 我将函数调用作为道具传递,它返回最新的对象。
我尝试将函数调用放到 handleClick 函数中,但没有帮助。对我来说,似乎函数没有及时返回值让组件传递它,但我不知道如何绕过这个问题。 这是包含所有内容的代码框 - 请帮助
https://codesandbox.io/s/cranky-johnson-s2dj3?file=/src/scheduledTrainingCard.js
这是父组件的代码,问题就在这里
import React, { useState } from "react";
import { Transition, Grid, Button, Container } from "semantic-ui-react";
import ScheduledTrainingCard from "./scheduledTrainingCard";
function ScheduleComponent(props) {
const days = [
{
id: "1",
dayTrainings: [
{
time: "20:15:00",
training: "zumba",
trainer: "joe"
},
{
time: "16:00:00",
training: "stretching",
trainer: "lily"
}
],
date:
"Thu Dec 28 1995 00:00:00 GMT+0100 (Central European Standard Time)",
createdAt: "2021-07-14T19:30:59.177Z"
},
{
id: "2",
dayTrainings: [
{
time: "23:15:00",
training: "boxing",
trainer: "phoebe"
},
{
time: "15:00:00",
training: "dancing",
trainer: "kate"
}
],
date: "Thu Sep 23 2021 20:57:38 GMT+0200 (Central European Summer Time)",
createdAt: "2021-09-23T19:01:53.801Z"
},
{
id: "3",
dayTrainings: [
{
time: "23:15:00",
training: "ballet",
trainer: "nataly"
},
{
time: "12:00:00",
training: "crossfit",
trainer: "sheldon"
}
],
date: "Fri Jul 23 2021 21:02:37 GMT+0200 (Central European Summer Time)",
createdAt: "2021-09-23T19:03:31.161Z"
}
];
const [activeItem, setActiveItem] = useState("");
const handleItemClick = (e) => {
setActiveItem(e.target.name);
};
function showSelectedDay(arr, dayId) {
arr.forEach((element, index) => {
if (dayId === element.id) {
console.log("selected day is " + element.date);
let trainings = element.dayTrainings;
trainings.map((training) => {
return training;
});
} else {
console.log("not selected, day id is " + element.id);
}
});
}
const ScheduleComponent = (
<Container style={{ textAlign: "left" }}>
<h1 style={{ textAlign: "center" }}>Training Schedule</h1>
<p>
Lorem ipsum dolor sit amet consectetur adipisicing elit. Incidunt
dolor unde repudiandae culpa ullam, asperiores officiis ratione
repellat quaerat nihil vel corporis distinctio vero doloribus dolore
optio commodi voluptatum inventore.
</p>
<Container>
<Grid style={{ margin: "2rem auto", textAlign: "center" }} relaxed>
<Button onClick={(e) => handleItemClick(e)} name={"1"}>
Monday
</Button>
<Button onClick={(e) => handleItemClick(e)} name={"2"}>
Tuesday
</Button>
<Button onClick={(e) => handleItemClick(e)} name={"3"}>
Wednesday
</Button>
</Grid>
</Container>
<Container>
{activeItem && (
<ScheduledTrainingCard
dayTraining={showSelectedDay(days, activeItem)}
></ScheduledTrainingCard>
)}
</Container>
</Container>
);
return ScheduleComponent;
}
export default ScheduleComponent;
【问题讨论】:
-
你 showSelectedDay 函数没有返回任何东西......你从 forEach 循环返回
标签: javascript reactjs react-props conditional-rendering