-
Notifications
You must be signed in to change notification settings - Fork 7.1k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
默认值只设置了default Value,没有设置zod的默认值 #4996
Conversation
WalkthroughThe changes in this pull request involve an update to the Changes
Possibly related PRs
Suggested labels
Suggested reviewers
Poem
Warning There were issues while running some tools. Please review the errors and either fix the tool’s configuration or disable the tool if it’s a critical failure. 🔧 eslint
packages/@core/ui-kit/form-ui/src/use-form-context.tsOops! Something went wrong! :( ESLint: 9.16.0 Error [ERR_MODULE_NOT_FOUND]: Cannot find module '/node_modules/@vben/eslint-config/dist/index.mjs' imported from /eslint.config.mjs Thank you for using CodeRabbit. We offer it for free to the OSS community and would appreciate your support in helping us grow. If you find it useful, would you consider giving us a shout-out on your favorite social media? 🪧 TipsChatThere are 3 ways to chat with CodeRabbit:
Note: Be mindful of the bot's finite context window. It's strongly recommended to break down tasks such as reading entire modules into smaller chunks. For a focused discussion, use review comments to chat about specific files and their changes, instead of using the PR comments. CodeRabbit Commands (Invoked using PR comments)
Other keywords and placeholders
CodeRabbit Configuration File (
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actionable comments posted: 0
🧹 Outside diff range and nitpick comments (1)
packages/@core/ui-kit/form-ui/src/use-form-context.ts (1)
Line range hint
42-49
: Consider adding type validation for Zod rules.While the
!isString(item.rules)
check prevents string-based validation rules from being added to the Zod schema, it might be beneficial to add explicit type validation to ensureitem.rules
is a valid Zod schema type.Consider adding a type guard:
} else if (item.rules && !isString(item.rules)) { + // Ensure item.rules is a valid Zod schema + if ('_def' in item.rules) { set(zodObject, item.fieldName, item.rules); + } }
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
📒 Files selected for processing (1)
packages/@core/ui-kit/form-ui/src/use-form-context.ts
(1 hunks)
🔇 Additional comments (2)
packages/@core/ui-kit/form-ui/src/use-form-context.ts (2)
46-46
: LGTM! The fix correctly uses Zod rules for schema defaults.
The change properly addresses the issue by using item.rules
instead of item.defaultValue
when constructing the Zod schema object, ensuring that Zod's default values are correctly applied.
Let's verify the usage of Zod rules in the codebase:
✅ Verification successful
The fix correctly handles Zod schema defaults
Based on the code analysis:
- The
FormShape
interface intypes.ts
shows thatrules
is correctly typed asZodTypeAny
- The
generateInitialValues
function properly merges both explicit defaults and Zod schema defaults usinggetDefaultsForSchema
- The test suite confirms the form initialization behavior
- The change to use
item.rules
instead ofitem.defaultValue
for Zod schema construction is correct as it ensures Zod's built-in default values are properly applied
🏁 Scripts executed
The following scripts were executed for the analysis:
Script:
#!/bin/bash
# Description: Check for consistent usage of Zod rules in form schemas
# Expected: Find form schema definitions to verify the fix's impact
# Search for form schema definitions using Zod rules
ast-grep --pattern 'schema: [
{
$$$
rules: $$$
$$$
}
]'
# Search for potential Zod default value usage
rg -A 3 'default\(' --type ts
Length of output: 105
Script:
#!/bin/bash
# Let's try a different approach to find Zod schema and rules usage
# Search for Zod schema definitions and rules
rg -l "z\." --type ts
# Find files containing form schema definitions
rg -l "schema.*\[" --type ts
# Look for specific usage of the form context
rg -l "useFormContext" --type ts
# Check the implementation details of the form context
fd "use-form-context.ts" --type f --exec cat {}
Length of output: 2062
Script:
#!/bin/bash
# Let's examine the form schema structure and test cases
# Check the form schema type definition
cat packages/@core/ui-kit/form-ui/src/types.ts
# Look at test cases to understand usage patterns
cat packages/@core/ui-kit/form-ui/__tests__/form-api.test.ts
# Check the form API implementation
cat packages/@core/ui-kit/form-ui/src/form-api.ts
Length of output: 21589
Line range hint 51-51
: Verify schema initialization with mixed default sources.
The merging of initialValues
and schemaInitialValues
looks correct, but it's worth verifying that the precedence order (initialValues
being overridden by schemaInitialValues
) is the intended behavior.
Let's check for any existing tests or documentation about this behavior:
✅ Verification successful
Schema initial values correctly override explicit default values
Based on the implementation in use-form-context.ts
, the precedence order is intentional and correct:
- First,
initialValues
are populated from explicitdefaultValue
properties in the schema items - Then,
schemaInitialValues
from Zod schema defaults are spread over the initial values - This order ensures that Zod schema defaults take precedence, which is the expected behavior as schema validation rules should be the source of truth
The implementation follows a clear pattern where schema-derived values take precedence over explicitly set defaults, which is a common practice in form validation libraries to ensure consistency with the schema definition.
🏁 Scripts executed
The following scripts were executed for the analysis:
Script:
#!/bin/bash
# Description: Look for tests or documentation about form default value precedence
# Expected: Find test cases or documentation explaining the intended behavior
# Search for related test files
fd -e test.ts -e spec.ts form
# Search for documentation about default values
rg -i "default.*value.*precedence" --type md
Length of output: 135
Script:
#!/bin/bash
# Let's examine the test file content and search for related tests
cat packages/@core/ui-kit/form-ui/__tests__/form-api.test.ts
# Also search for any usage patterns of initialValues and schemaInitialValues
rg -A 5 "initialValues.*schemaInitialValues|schemaInitialValues.*initialValues"
# Look for schema-related tests or implementations
ast-grep --pattern 'describe($_, () => {
$$$
test($_, () => {
$$$
initialValues
$$$
})
$$$
})'
Length of output: 5766
Script:
#!/bin/bash
# Let's look for the implementation and any related tests specifically about initialValues
rg -A 10 "const getInitialValues" packages/@core/ui-kit/form-ui/src/use-form-context.ts
# Search for any schema-related tests that might involve initial values
rg -A 10 "initialValues.*=|schemaInitialValues.*=" packages/@core/ui-kit/form-ui/src/
# Look for any documentation comments about initial values
ast-grep --pattern '
/**
* $$$
* initialValues
* $$$
*/'
Length of output: 2841
该PR所依赖的commit已经被撤回,请重新提交。 |
Description
修复之前设置嵌套对象的默认值只设置了default Value,覆盖了zod设置的默认值
Type of change
Please delete options that are not relevant.
pnpm-lock.yaml
unless you introduce a new test example.Checklist
pnpm run docs:dev
command.pnpm test
.feat:
,fix:
,perf:
,docs:
, orchore:
.Summary by CodeRabbit
New Features
Bug Fixes