From 804e24eff9b5cb4b4b42a2731db6a04267b4258e Mon Sep 17 00:00:00 2001 From: wren Date: Wed, 25 Mar 2026 17:04:10 +0800 Subject: [PATCH] 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 --- app/components/rules/new/ReviewSettings.tsx | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/app/components/rules/new/ReviewSettings.tsx b/app/components/rules/new/ReviewSettings.tsx index 4943150..fba23c7 100644 --- a/app/components/rules/new/ReviewSettings.tsx +++ b/app/components/rules/new/ReviewSettings.tsx @@ -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);