有谁知道我可以对<li>
以下组件中的元素做什么,以便单击其中一个<li>
元素会将 activityType 设置为该特定元素中包含的文本<li>
?例如,第一个<li>
是“教育”。单击那个,我希望发生这种情况:setActivityType('education')。
有谁知道我可以<li>
对以下组件中的元素做些什么,以便单击其中一个<li>
s 将设置activityType
为包含在特定内容中的文本<li>
?例如,第一个<li>
是“教育”。单击那个,我希望发生这种情况:setActivityType('education')
类型菜单.js:
import React, { useState } from "react";
const TypeMenu = () => {
const [activityType, setActivityType] = useState('');
return (
<div>
<h2>Please select an activity type:</h2>
<ul>
<li>Education</li>
<li>Recreational</li>
<li>Social</li>
<li>DIY</li>
<li>Charity</li>
<li>Cooking</li>
<li>Relaxation</li>
<li>Music</li>
<li>Busywork</li>
</ul>
</div>
)
}
export default TypeMenu;
更新:
我接受了给出的建议,并将每个<li>
元素的子文本放入一个数组中。然后我映射到该数组,以创建个人<li>
,给每个人一个 onClick,理想情况下,将设置activityType
为<li>
我点击的文本。然后,我想根据activityType
动态设置的任何内容进行 API 调用。使用下面的代码,我离解决这个问题又近了一步,但我仍然无法按activityType
原样控制/更新代码。该 const 以空字符串的形式返回,这导致我的 API 调用被关闭。有什么建议么?
类型菜单.js:
import React, { useState } from "react";
import { connect } from "react-redux";
import { getActivityByType } from "../actions";
const TypeMenu = props => {
const [activityType, setActivityType] = useState('');
const activityArr = [
'Education',
'Recreational',
'Social',
'DIY',
'Charity',
'Cooking',
'Relaxation',
'Music',
'Busywork'
];
const returnActivity = (t) => {
setActivityType(t.toLowerCase());
props.getActivityByType(activityType);
}
console.log(activityType);
return (
<div>
<h2>Please select an activity type:</h2>
<ul>
{activityArr.map(type => (
<li key={type} onClick={() => returnActivity(type)}>{type}</li>
))}
</ul>
</div>
)
}
export default connect(null, { getActivityByType })(TypeMenu);