javascript - 更改选择时组件未呈现
问题描述
每当我更改选择中的值时,我都必须显示不同的图表
- 如果我选择
bar
,它应该显示条形图 - 如果我选择
line
,它应该显示折线图
最初该值为零,因此它显示条形图,然后当我更改为线条时它可以正常工作,但是当我返回条形图时它不会。
代码:
const [chart,setChart]=useState(0)
const [filterData, setFilterData] = useState([])
export const ChartTypes =[
{
value: 0,
label: 'Bar'
},
{
value: 1,
label: 'Line'
},
{
value: 2,
label: 'Scatter Plot'
},
// My select Component
const handleChartChange = (event) =>{
setChart(event.target.value)
}
<FormControl variant="filled" className={classes.formControl}>
<InputLabel htmlFor="filled-age-native-simple">Chart</InputLabel>
<Select
native
value={chart}
onChange={handleChartChange}
inputProps={{
name: 'Chart',
id: 'filled-age-native-simple',
}}
>
{ChartTypes.map((e,chart)=>{
return (
<option value={e.value} key={e}>
{e.label}
</option>
)
})}
</Select>
{/* </Col>
<Col> */}
</FormControl>
// conditional rendering the component
{chart === 0 ? <BarChart
graphData={filterData}
filterType={graphFilter}
/> : <LineChart
graphData={filterData}
filterType={graphFilter} />
}
编辑
谢谢,它在以下答案的支持下工作
解决方案
您的问题是 的值event.target.value
将是一个字符串"0"
,而不是0
您在chart === 0
支票中检查的数字。
您的初始值有效,因为您将零硬编码为数字。
选项1
您可以通过执行更改检查以不包括类型chart == 0
或者
选项 2
您可以将数组中的 更改value
为ChartTypes
字符串:
export const ChartTypes = [
{
value: '0',
label: 'Bar'
},
{
value: '1',
label: 'Line'
},
{
value: '2',
label: 'Scatter Plot'
}
];
并使您的初始值const [chart, setChart] = useState('0')
或者
选项 3
您可以更改handleChartChange
函数以将值解析为数字:
const handleChartChange = (event) => {
setChart(parseInt(event.target.value));
}
推荐阅读
- html - 如何强制引导 4 列连续调整每个内部内容的高度?
- python - 如何从文件或列表中读取?
- php - Braintree dropin UI - 需要将访问令牌传递给 Braintree\Gateway
- python-3.x - 如何遍历 API 调用 Python 3 中的两个列表
- sql - Oracle CLOB REGEXP_REPLACE 建议
- python - 尝试运行转换为 .exe 文件的 .py 程序后出现病毒警告
- android - Android Firebase 数据库 limitolast 10 但加起来
- php - 图像扩展未显示在 PHP 文件上传中
- python - 如何在 TensorFlow 中将多个序列输入到 CNN 中?
- git - 如何使用 REST Api 从本地 TFS 服务器 2018 获取多个提交?