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:
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user