--- title: Computed Properties Cannot Accept Parameters impact: MEDIUM impactDescription: Attempting to pass arguments to computed properties fails or defeats caching type: capability tags: [vue3, computed, methods, parameters, common-mistake] --- # Computed Properties Cannot Accept Parameters **Impact: MEDIUM** - Computed properties are designed to derive values from reactive state without parameters. Attempting to pass arguments defeats the caching mechanism or causes errors. Use methods or computed properties that return functions instead. ## Task Checklist - [ ] Use methods when you need to pass parameters - [ ] Consider if the parameter can be reactive state instead - [ ] If you must parameterize, understand that returning a function loses caching benefits - [ ] Prefer method calls in templates for parameterized operations **Incorrect:** ```vue ``` ```vue ``` **Correct:** ```vue ``` ## Workaround: Computed Returning a Function If you need something computed-like with parameters, you can return a function. **However, this defeats the caching benefit:** ```vue ``` ## When to Use Each Approach | Scenario | Approach | Caching | |----------|----------|---------| | Fixed filter based on reactive state | Computed | Yes | | Dynamic filter passed as argument | Method | No | | Filter options from user selection | Computed + reactive param | Yes | | Formatting with variable parameters | Method | No | | Composed derivation with argument | Computed returning function | Partial | ## Make Parameters Reactive The best pattern is often to make the "parameter" a reactive value: ```vue ``` ## Reference - [Vue.js Computed Properties](https://vuejs.org/guide/essentials/computed.html) - [Vue.js Methods](https://vuejs.org/guide/essentials/reactivity-fundamentals.html#declaring-methods)