javascript - React js无法分配给只读属性
问题描述
我有两个组件作为类别和类别内容。类别是父组件。
function handlePageSize(pageValue) {
props.pageSize = pageValue;
// React.cloneElement(element, pageSize = pageValue)
}
return (
<Fragment>
<Meta name="description" content={metaDescription} />
<CategoryContent
categoryId={id}
classes={classes}
data={loading ? null : data}
pageControl={pageControl}
sortProps={sortProps}
onSelectSize = {handlePageSize}
/>
</Fragment>
);
};
Category.propTypes = {
classes: shape({
gallery: string,
root: string,
title: string
}),
id: number,
pageSize: number
};
Category.defaultProps = {
id: 3,
// TODO: This can be replaced by the value from `storeConfig when the PR,
// https://github.com/magento/graphql-ce/pull/650, is released.
pageSize: 8
};
在类别组件中存在 pageSize 属性。当我在子组件类别组件中选择下拉值时,我需要更改该值。以下是子组件
let selectedValue = null;
function onChangePageSize(event) {
selectedValue = event.target.value
onSelectSize(selectedValue);
}
<select id="lang" onChange={onChangePageSize} defaultValue={8} value={selectedValue}>
<option value="8">8</option>
<option value="16">16</option>
<option value="24">24</option>
</select>
当我选择值时,我收到错误“无法分配给只读属性”。有没有其他方法可以做到这一点。当我选择下拉值时,我需要立即更改页面中显示的项目数。
解决方案
您不能更新道具的属性值(React 道具是不可变的)。
你可以做的是:放入pageSize
一个状态并更新它。
这是一个例子:
// import useState hook
import { useState } from 'react';
// create a state
const [pageSize, setPageSize] = useState(8); // default value
// to update the value use `setPageSize(val)`
function handlePageSize(pageValue) {
setPageSize(pageValue)
}
// to access the value, just use `pageSize`
console.log(pageSize)
推荐阅读
- command-line - 将基本名称批量添加到另一个文件
- api - MediaWiki:获取“readapidenied”错误而不是登录令牌
- sql - ORA-00903: 使用三引号的多行 spark sql 字符串的无效表名错误
- java - 如何将保存的 ArrayList 对象实现到 ListView Android
- azure - 我们可以在 Azure 的文件系统一致快照备份中排除特定文件系统吗
- tensorflow - 一个训练脚本中有多个 TPUv2 设备?
- simulation - 如何模拟停车场的边界?
- php - 使用“if”条件 PHP 更改 html 样式
- javascript - NextJS - 你可以在有条件的情况下使用来自 api 的返回吗?
- html - 有没有办法更改图标图标的边框半径?