fix(frontend): guard availableFields.includes in renderRuleConfig

config.availableFields may be undefined or a non-array value (e.g. {}),
causing TypeError when calling .includes/.every directly on it.
Precompute cfgAvailableFields with Array.isArray guard before use.

Fixes: N.includes is not a function on rules/new page.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-03-25 17:04:10 +08:00
parent a8949d9abf
commit 804e24eff9
+4 -4
View File
@@ -872,10 +872,10 @@ export function ReviewSettings({
const { id, type, config } = rule;
// 如果规则中的availableFields不是最新的,则更新它
if (type && config && (!config.availableFields ||
(Array.isArray(config.availableFields) &&
!availableFields.every((field) => (config.availableFields as string[]).includes(field)) ||
!(config.availableFields as string[]).every((field) => availableFields.includes(field))))) {
const cfgAvailableFields = Array.isArray(config.availableFields) ? config.availableFields as string[] : null;
if (type && config && (!cfgAvailableFields ||
!availableFields.every((field) => cfgAvailableFields.includes(field)) ||
!cfgAvailableFields.every((field) => availableFields.includes(field)))) {
// 延迟更新以避免在渲染过程中修改状态
setTimeout(() => {
// console.log('Updating rule config with new available fields:', availableFields);