上述回答错误,比如我有很多种状态组合怎么办?不一定只有aaa和bbb
时间: 2024-01-18 21:02:56 浏览: 116
非常抱歉,我的回答不够全面。如果有很多种状态组合,可以使用一个对象来存储每种状态组合对应的渲染结果。这个对象的键可以是状态组合的字符串,值可以是对应的渲染结果。然后,根据 `orderStatus` 和 `extra` 的值来计算出状态组合的字符串,再从对象中取出对应的渲染结果即可。
下面是一个示例代码:
```jsx
import React, { useMemo } from 'react';
const renderContentMap = {
'PAYED_default': 'aaa',
'PAYED_default1': 'bbb',
'UNPAYED_default': 'ccc',
'UNPAYED_default1': 'ddd',
// 可以添加更多的状态组合
}
function getStateKey(orderStatus, extra) {
return `${orderStatus}_${extra}`;
}
function MyComponent({ obj }) {
const { orderStatus, extra } = obj;
const content = useMemo(() => {
const stateKey = getStateKey(orderStatus, extra);
return renderContentMap[stateKey] || 'default';
}, [orderStatus, extra]);
return (
<div>
{content}
</div>
);
}
```
在上述示例中,我们定义了一个名为 `renderContentMap` 的对象,用来存储每种状态组合对应的渲染结果。键是状态组合的字符串,值是对应的渲染结果。然后,我们定义了一个名为 `getStateKey` 的函数,用来根据 `orderStatus` 和 `extra` 的值来计算出状态组合的字符串。在组件中,我们使用 `useMemo` 钩子函数传入一个回调函数,这个回调函数中根据 `orderStatus` 和 `extra` 的值来计算出状态组合的字符串,并从 `renderContentMap` 对象中取出对应的渲染结果。如果对象中没有对应的渲染结果,则返回默认值 `'default'`。最后,我们将这个返回值 `content` 渲染到页面上。
阅读全文