我有一个有状态的 React 组件,我想访问状态对象内部的状态形式的值,特别是number_rows
.
class Contracts extends React.Component{
constructor(props) {
super(props);
this.state = {
number_rows: 30, //starting default
data: props.data
.sort((a, b) => this.high_to_low(a, b, "latestVolume"))
.slice(0, this.state.number_rows)
};
}
render(){
return(
...
)
}
}
export default Contracts;
我无法让我的slice()
读取this.state.number_rows
中设置的行数
例
b={a:'a', c:b.a}
{a: "a", c: "a"}
我试了state.number_rows
,this.number_rows
这可能吗?有解决方法吗??
感谢您的帮助!!
numbers_rows
是常量还是可以更改?
如果它是常量,请考虑将其移出您的状态,因为从技术上讲,它不是应用程序的状态。
也许做类似的事情
constNUMBERS_ROWS = 30;
Contracts
组件上方,或将该变量保存在常量文件中,然后将该变量导入该组件上。
如果可以更改。
您可以将数据的初始状态设置为空数组,然后根据您的情况有 2 种选择。
如果props.data
是从 API 提取的值,并且该值可以是 null 或空数组(如果提取仍在进行中),请使用componentDidUpdate
在提取值后根据props.data
值更新data
状态。
如果您非常确定props.data
不会是空/空数组并且在挂载组件之前已经填充,则可以使用componentDidMount
来设置data
状态,基本上您只需将排序和切片的逻辑移动到componentDidMount
或componentDidUpdate
根据您的情况。
也许您可以使用默认的行数变量先初始化组件的状态。之后,当你需要更改number_rows
变量时,只需调用alterNumberRows
函数并使用新的number_rows
值计算data
,然后使用新计算的number_rows
和data
更新状态。
class Contracts extends React.Component {
constructor(props) {
super(props);
const DEFAULT_NUMBER_ROWS = 30;
this.state = {
number_rows: DEFAULT_NUMBER_ROWS, // starting default
data: props.data
.sort((a, b) => this.high_to_low(a, b, "latestVolume"))
.slice(0, DEFAULT_NUMBER_ROWS),
};
}
alterNumberRows = () => {
// calculate the new number_rows
// I just add one to the previous number_rows for simplicity
const number_rows = this.state.number_rows + 1;
// use the newly calculated number_rows to slice a new data array
const data = this.props.data
.sort((a, b) => this.high_to_low(a, b, "latestVolume"))
.slice(0, number_rows);
this.setState({
number_rows,
data,
});
}
render() {
return (
...
);
}
}