autotracking.mutation-after-consumption μ¬μ© μ€λ¨μ κ²½κ³ λμ μ±μ μ€λ¨μν€λ μ€λ₯λ₯Ό λ°μμν΅λλ€.
μ€λ₯λ₯Ό λ³΄λ €λ©΄ μ½μμ μ΄μ΄μΌ ν©λλ€.
μ§μ μ€λ¨μ μ€λ₯λ₯Ό λ°μμν΅λλ€.
μ§μ μ€λ¨μ κ²½κ³ μ λλ€.
ν , λλ λΉμ μ΄ μ¬κΈ°μ μλ―Ένλ λ°λ₯Ό μμ ν μ΄ν΄νμ§ λͺ»ν©λλ€. λμ Έμ§ μ€λ₯λ μ£Όμ₯(μ§μ μ€λ¨μ΄ μλ)μ΄λ©° ν΄κ²°νκΈ° μν κ²μ΄ μλλλ€...
μ§κΈμ λ«μΌλ €κ³ νλλ° μ¬κΈ°μμ λκ° μλͺ» μ΄ν΄ν λΆλΆμ΄ μμΌλ©΄ λ€μ μ΄κ² λμ΄ κΈ°μ©λλ€...
μ΄κ²μ μ€νλμ΄μΌ νλ μ¬μ© μ€λ¨μΌλ‘ κ°μ£Όλμ§λ§ κ²½κ³ λ₯Ό νμνλ λμ μ΄μ€μ μ΄ μ€λ₯λ₯Ό μΌμΌν€λ μ΄μ λ 무μμ λκΉ? μ€λ₯λ‘ μΈν΄ μ±μ 리ν©ν°λ§νλΌλ κ²½κ³ λ₯Ό νμνλ λμ μ±μ΄ μ€λ¨λ©λλ€.
λ§ν¬ν μ§μ μ Emberκ° λ λλ§ μμ§μ ꡬμ±νλ κ³³μΌλ‘ μ΄μ€μ λ° μ¬μ© μ€λ¨ λͺ¨λμ λν νν¬λ₯Ό μ 곡νλ©° λ λλ§ μμ§μ μλ리μ€μ λ°λΌ μ¬μ©ν κ²μ μ νν©λλ€.
μ΄λ¬ν ꡬμ±λ μ΅μ μ glimmer-vmμμ λ€μ μ€ νλλ₯Ό μ€νν©λλ€.
μ΄ νΉμ μ¬λ‘κ° μ£Όμ₯μ΄ μλλΌ μ¬μ© μ€λ¨λμ΄μΌ νλ μ΄μ λ₯Ό λ μμΈν μ€λͺ ν μ μμ΅λκΉ? twiddleμμ μνλλ νΉμ μμ μ νμ λ°©μ§νκΈ° μν κ²μ΄μμ΅λλ€(μ€λ₯ λ©μμ§κ° μ€λͺ νλ λλ‘).
export default class ApplicationController extends Controller {
<strong i="18">@tracked</strong> appName = 'Ember Twiddle';
get name() {
this.appName = "Test"
if (this.appName === "Test") {
this.appName = "test"
}
return this.appName
}
}
νΉν μ΄ κ²½μ° μΆμ λ κ° μ μ½μ
@rwjblue μ¬κΈ°μ λ¬Έμ λ Emberμ λΆ λ¦΄λ¦¬μ€λ‘ μΈν΄ μ΄μ μ 무μμμ μΌλ‘ μ΄ μ£Όμ₯μ μλ°νλ μ±μ΄ μ΄μ μμΆμ μ λ°μ΄νΈκ° ν΄κ²°λ λκΉμ§ μ κ·Έλ μ΄λκ° μ°¨λ¨λλ€λ κ²μ λλ€. μ κ²½μ°μλ μ¬μ©νλ μ λμ¨μ΄ μ΄ μ΄μ€μ μ μλ°νκΈ° λλ¬Έμ μ μ§ κ΄λ¦¬νλ μ±μ΄ 3.22λ‘ μ κ·Έλ μ΄λλμ§ μλλ‘ μ°¨λ¨λμμ΅λλ€.
μ΄λ¬ν μμΆμ μ΄μ€μ μ΄ μ€λ₯ λμ κ²½κ³ λ‘ λμ λ κ²½μ° μ΄λ¬ν λ¬Έμ λ₯Ό μΆμ ν μκ°μ΄ μ£Όμ΄μ§κΈ° λλ¬Έμ λμ κ°μ μ±μ΄ μ΅μ μνλ₯Ό μ μ§νλ λ μ¬μ΄ κ²½λ‘λ₯Ό μ 곡ν κ²μ λλ€. νμ¬ μνμμ λ΄ μ±μ μ΄ μλ‘μ΄ μ£Όμ₯μ μλ°νλ μμΉ/μ΄μ λ₯Ό μΆμ ν λμνμ΄ ν보λ λκΉμ§ 3.21μ μ μ§ν΄μΌ ν©λλ€.
λ΄κ° λ²κ·ΈλΌκ³ μκ°νλ μ΄μ λ ember-gesturesκ° Ember 3.22μμ μλμ λ©μ·κΈ° λλ¬Έμ
λλ€.
κ·Έλ€μ λΆν΄μ μ΄ κΈ°λ₯μ μ¬μ©νκ³ μμΌλ©° μ΄μ λ²μ μμ μλνμ΅λλ€.
__instance λ³μλ₯Ό μ½μ λ€μ μ
λ°μ΄νΈνλ―λ‘ λ μ΄μ μλνμ§ μκ³ μ΄μ μ£Όμ λ²μ λ³κ²½μ΄ μλλλΌλ μ±μ΄ μ€λ¨λ©λλ€.
__teardownRecognizers: on('willDestroyElement', function() {
let instance = this.get('__instance');
if (instance) {
//instance.off();
instance.destroy();
this.set('__instance', null);
}
}),
μ¬κΈ°μμ λ¬Έμ λ Emberμ λΆ λ¦΄λ¦¬μ€λ‘ μΈν΄ μ΄μ μ 무μμμ μΌλ‘ μ΄ μ£Όμ₯μ μλ°νλ μ±μ΄ μ΄μ μμΆμ μ λ°μ΄νΈκ° ν΄κ²°λ λκΉμ§ μ κ·Έλ μ΄λκ° μ°¨λ¨λλ€λ κ²μ λλ€. μ κ²½μ°μλ μ¬μ©νλ μ λμ¨μ΄ μ΄ μ΄μ€μ μ μλ°νκΈ° λλ¬Έμ μ μ§ κ΄λ¦¬νλ μ±μ΄ 3.22λ‘ μ κ·Έλ μ΄λλμ§ μλλ‘ μ°¨λ¨λμμ΅λλ€.
μ΄κ²μ νλ₯ν©λλ€! μλ λ³΄κ³ μμλ twiddleμ μ½λκ° μ€μ λ‘ μλν μ μ΄ μλμ§(λλ μ€λ₯κ° λ°μν μ΄μ μ λν μΆλ‘ ) νμλμ§ μμμ΅λλ€.
@kpfefferle - μ΄λ€ λ²μ μμ μ κ·Έλ μ΄λν©λκΉ? κ·νμ κ²½μ° μ£Όμ₯μ μΌμΌν€λ λμ°λ³μ΄μ μμΈμ 무μμ λκΉ?
λͺ νν νμλ©΄, μ λ μ£Όλ‘ μ¬κΈ°μ λ³΄κ³ λ λ΄μ©(λ²μ, μ¬μ© ν¨ν΄ λ±)μ μ΄ν΄νλ €κ³ λ Έλ ₯νκ³ μμΌλ©° νΉν SemVerμ λν΄ ν©λ¦¬ννκ±°λ λ Όμνλ €λ κ²μ΄ μλλλ€. πΈ
@rwjblue Dependabot PRμ΄ 3.21.3μμ 3.22.0μΌλ‘ μΆ©λνλ λ° μ€ν¨ν λ κ°μ μ±μ΄ μμ΅λλ€. λ λ€ μ€ν¨ν λͺ¨λ ν μ€νΈμ λν΄ λ€μκ³Ό κ°μ μ μ¬ν μ€λ₯ λ©μμ§λ₯Ό νμν©λλ€.
actual: >
[object Object]
stack: >
Error: Assertion Failed: You attempted to update `_errors` on `changeset:[object Object]`, but it had already been used previously in the same computation. Attempting to update a value after using it in a computation can cause logical errors, infinite revalidation bugs, and performance issues, and is not supported.
`_errors` was first used:
- While rendering:
application
forms
forms.form
form-workflow
form-workflow/form
form-for
Stack trace for the update:
at setter ([...]/assets/vendor.js:56179:9)
at EmberChangeset.set [as _errors] ([...]/assets/vendor.js:17775:7)
at EmberChangeset.BufferedChangeset.set (webpack://__ember_auto_import__/./node_modules/validated-changeset/dist/validated-changeset.es5.js?:2674:17)
at Object.set ([...]/assets/vendor.js:104899:22)
at Proxy.BufferedChangeset._handleValidation (webpack://__ember_auto_import__/./node_modules/validated-changeset/dist/validated-changeset.es5.js?:2447:18)
at Proxy.BufferedChangeset._validateKey (webpack://__ember_auto_import__/./node_modules/validated-changeset/dist/validated-changeset.es5.js?:2425:23)
at eval (webpack://__ember_auto_import__/./node_modules/validated-changeset/dist/validated-changeset.es5.js?:2211:24)
message: >
Assertion Failed: You attempted to update `_errors` on `changeset:[object Object]`, but it had already been used previously in the same computation. Attempting to update a value after using it in a computation can cause logical errors, infinite revalidation bugs, and performance issues, and is not supported.
`_errors` was first used:
- While rendering:
application
forms
forms.form
form-workflow
form-workflow/form
form-for
μ΄κ²μ μΌλΆ μ€λ₯ μ¬κ³μ°μ μννλ ember-changeset-validationsμ λ΄λΆμΈ κ² κ°μ§λ§ μμ§ νν€μΉ λμνμ΄ μμμ΅λλ€. μ΄μ€μ μ΄ μ ννκ³ μ ν¨ν κ²μ²λΌ 보μ΄μ§λ§ λ΄ ν μ€νΈ μ€μνΈλ₯Ό ννμν€λ κ²μ λ¬΄μ¨ μΌμ΄ μΌμ΄λκ³ μλμ§ μμλΌ μ μμ λκΉμ§ 3.22λ‘ μ κ·Έλ μ΄λν μ μλ€λ κ²μ μλ―Έν©λλ€.
μ‘μλ€. FWIW μ€λ₯ λ©μμ§λ λλ²κΉ μ λμμ΄ λλ μ΅μν "μ μ©ν" κ²μΌλ‘ 보μ λλ€.
@Yelinz - λ³΄κ³ λ μλ λ¬Έμ ( twiddleμμ )κ° @kpfefferle μ΄ λ³΄κ³ νλ κ²κ³Ό λμΌν μμ(μ΅μν 3.16 μ΄νμ
λ΄ μ΄μ μ견μμ λ§νλ―μ΄ 3.21μμ 3.22κΉμ§μ΄λ©° μν©μ λ€λ₯Έ μ λμ¨μ μ¬μ©νλ @kpfefferle μ λΉμ·ν©λλ€. λ΄κ° λ§λ λΉνκΈ°λ κ·Έ μ€λ₯λ₯Ό λΆλ¬μΌμΌν€κΈ° μν κ²μ΄μμ΅λλ€. μμΈμ΄ λλ μ€μ μ½λλ μ΄μ μ κ²μν μ½λμ λλ€.
2020-10-12T09:38:40.7310067Z actual: >
2020-10-12T09:38:40.7310575Z [object Object]
2020-10-12T09:38:40.7311080Z stack: >
2020-10-12T09:38:40.7314024Z Error: Assertion Failed: You attempted to update `__instance` on `<ember-caluma<strong i="7">@component</strong>:x-toggle-switch::ember726>`, but it had already been used previously in the same computation. Attempting to update a value after using it in a computation can cause logical errors, infinite revalidation bugs, and performance issues, and is not supported.
2020-10-12T09:38:40.7315638Z
2020-10-12T09:38:40.7316183Z `__instance` was first used:
2020-10-12T09:38:40.7316698Z
2020-10-12T09:38:40.7317709Z - While rendering:
2020-10-12T09:38:40.7318285Z application
2020-10-12T09:38:40.7318787Z demo
2020-10-12T09:38:40.7319293Z application
2020-10-12T09:38:40.7319772Z
2020-10-12T09:38:40.7320295Z Stack trace for the update:
2020-10-12T09:38:40.7321118Z at dirtyTagFor (http://localhost:7357/assets/vendor.js:74216:9)
2020-10-12T09:38:40.7322185Z at markObjectAsDirty (http://localhost:7357/assets/vendor.js:31365:32)
2020-10-12T09:38:40.7323337Z at notifyPropertyChange (http://localhost:7357/assets/vendor.js:31403:5)
2020-10-12T09:38:40.7324352Z at _set2 (http://localhost:7357/assets/vendor.js:32379:9)
2020-10-12T09:38:40.7325263Z at Class.set (http://localhost:7357/assets/vendor.js:45923:29)
2020-10-12T09:38:40.7326501Z at Class.__teardownRecognizers (http://localhost:7357/assets/vendor.js:165238:14)
2020-10-12T09:38:40.7327580Z at sendEvent (http://localhost:7357/assets/vendor.js:30998:14)
μ€ν μΆμ μ λν κ·Έμ
λ΄κ° λ§λ twiddleμ κ·Έ μ€λ₯λ₯Ό λΆλ¬ μΌμΌν€κΈ°μν κ²μ λλ€.
μ, νμ§λ§ ν΄λΉ μ€λ₯κ° λ°μ ν΄μΌ νλ μλ리μ€κ° λ§μ΄ μμ΅λλ€. μ°λ¦¬κ° νμ ν΄μΌ ν κ²μ μ΄μ μ μΆμ λμ§
μ¬μ© ν¨ν΄μ΄ 무μμΈμ§ μκ² λλ©΄ μ£Όμ₯ λμ λΉμΆμ²μ λ΄λλ‘ λ³κ²½ν μ μλμ§ μμλΌ μ μμ§λ§ νμ¬λ‘μλ μ¬λ¬λΆμ΄ λΆλͺμΉλ μ€μ λ¬Έμ λ₯Ό λνλ΄λ μ¬μμ°μ΄ μμ§ μμ΅λλ€. κ·Έλμ μ°λ¦¬κ° μ£Όμ₯μ λΉμΆμ²μΌλ‘ μ‘°μ ν μ μλμ§ μ λ§λ‘ λ§ν μ μμ΅λλ€...
μ¬κΈ°μ μ€λ λ€λ₯Έ μ¬λλ€μ μν΄ μ¬κΈ°μμ λ³΄κ³ μΆμ κ²μ μ λ¬λλ μ¬μμ°(μΌλΆ 리ν¬μ§ν 리μμ ν μ€νΈ μ€ν¨μ ννλ‘ μ΄μμ μΌλ‘λ, μ λμ¨μ΄λ μ΄ λͺ©μ μΌλ‘ λ§λ€μ΄μ§ λ°λͺ¨ μ±μ΄λ μκ΄μμ)μ λλ€. 3.21 λ° 3.22μμ μ€ν¨ν©λλ€.
3μ 21μΌμ ν΅κ³Όν ν
μ€νΈμ
λλ€.
https://github.com/projectcaluma/ember-caluma/pull/1065/checks?check_run_id=1241360614
ννΈ λμΌν μ½λλ 3.22μμ μ€ν¨ν©λλ€.
https://github.com/projectcaluma/ember-caluma/pull/1065/checks?check_run_id=1241408429
λ¬Έμ λ μ λ² μ μ€μ²μ μ΄μ μ κ²μν μ½λ μ‘°κ°μΌλ‘ λλλ κΈ΄ μ’ μμ± λͺ©λ‘μμ λ°μν©λλ€.
μ¬λ¬λΆμ λͺ¨λ λμμ κ°μ¬λ립λλ€.
곧 ν¨μΉ 릴리μ€μμ μ΄λ₯Ό μ 곡νκΈ° μν΄ λ Έλ ₯ν κ²μ λλ€.
@rwjblue λ¬Έμ λ₯Ό _ μΆμ _ν΄ @pzuraq μκ² κ°μ¬λ립λλ€!
:wave: @rwjblue , μ΄ μμ μ¬νμ΄ ν¬ν¨λ 3.22.1 ν¨μΉλ₯Ό 릴리μ€ν
ember-changeset-validations
μ£Όμμ μ€μ λ ν¨ν΄μΌλ‘ μΈν΄ λ§μ μ±μμ μ΄ λ¬Έμ κ° λ°μνμ΅λλ€. λ€μμ μ°λ¦¬κ° μ¬μ©νλ ν¨ν΄μ μμ
λλ€.
import Component from '@glimmer/component';
import Changeset from 'ember-changeset';
import lookupValidator from 'ember-changeset-validations';
import OrderValidations from '../validations/order';
export default class OrderFormComponent extends Component {
constructor() {
super(...arguments);
let model = this.args.model;
this.changeset = new Changeset(
model,
lookupValidator(OrderValidations),
OrderValidations
);
this.changeset.validate();
}
}
this.changeset.validate()
λ 3.22.0μμ μ΄μ€μ
μ€ν¨λ₯Ό νΈλ¦¬κ±°ν©λλ€.
λ°©κΈ v3.22.1(https://github.com/emberjs/ember.js/releases/tag/v3.22.1)μ 릴리μ€λ₯Ό νΈλ¦¬κ±°νμΌλ©°, 곧 NPMμ κ²μλμ΄μΌ ν©λλ€(CIκ° μλ£λλ©΄).
μ΄ μμ μ¬νμ΄ μ€μ λ‘ v3.22.1 릴리μ€μ ν¬ν¨λμμ΅λκΉ? μλλ©΄ κ΄λ ¨ PRμ΄ μ΄ λ¬Έμ λ₯Ό μμ ν μμ νμ§ λͺ»νμ΅λκΉ? λ¦΄λ¦¬μ€ λ ΈνΈμμ https://github.com/emberjs/ember.js/pull/19193 μ λ³Ό μ μμ§λ§ λ΄ νλ‘μ νΈλ μ¬μ ν μ΄μ κ³Ό λμΌν ν μ€νΈ μ€ν¨λ₯Ό 보μ¬μ£Όκ³ μμ΅λλ€ π€
νμΈλ¨, 3.22.1μμλ μ¬μ ν νμλ¨
μ¬μ‘°μ¬λ₯Ό μν΄ μ¬κ°ν©λλ€. λ¨μνλ/μ΅μνμ λ°λͺ¨(3.20μ ν΅κ³Όνκ³ 3.22μ μ€ν¨)λ μ λ§ λμμ΄ λ κ²μ λλ€.
λ€μμ 3.22.1
μμ μ€λ₯λ₯Ό μμ±νμ§λ§ 3.21
μμ μλνλ κ°λ¨ν μ μ
λλ€.
export default class ExampleComponent extends Component {
<strong i="9">@tracked</strong> count = 0;
constructor() {
super(...arguments);
this.count++; // this fails in 3.22.1
}
}
3.21
:
3.22.1
:
μμ±μμμ μΆμ μμ±μ μ½κ³ μ λ°μ΄νΈνλ λ° λ¬Έμ κ° μμ΅λκΉ? λ΄ μ μ λͺ¨λΈμ μμ±μ΄ κ΅¬μ± μμμ λ‘컬μ΄κ³ μμ§ DOMμ μ무 κ²λ λ λλ§νμ§ μμκΈ° λλ¬Έμ μ΄κ²μ΄ λ¬Έμ κ° μμ΄μΌ νλ€λ κ²μ λλ€.
μμ μλ λν μ΅κ·Όμ νκ·Έκ° μ§μ λ 3.23 μ λν μ£Όμ₯μ μ κΈ°ν©λλ€.
@GavinJoyce κ° Glimmer μ»΄ν¬λνΈμ ν¨κ» μ 곡ν μμμΈκ°μ? μ°λ¦¬λ μ΄μ λ²μ κ³Όμ νΈνμ±μ μν΄ Classic κ΅¬μ± μμμμλ§ μ΄ λ²κ·Έλ₯Ό μμ νλ €κ³ νμ΅λλ€. Glimmer κ΅¬μ± μμμμλ μΌλ°μ μΌλ‘ μμΌλ‘ _do_ λ λλ§ μ€μ μ΄μ κ°μ λμ°λ³μ΄κ° μ€ν¨ν κ²μΌλ‘ μμν©λλ€. μΌλ°μ μΌλ‘ λ¨μΌ μΆμ κ³μ° μ€μ μΆμ μνλ₯Ό μμ νκ² μ½μ λ€μ μΆμ μνμ μ°λ κ²μ λΆκ°λ₯ν©λλ€.
μ΄μ€μ μ΄ μλ 3.15μμ κ°νλμκΈ° λλ¬Έμ μ΄λ¬ν μ νμ λμ°λ³μ΄λ₯Ό λͺ¨λ λ€λ£¨λ €κ³ νμ§λ§ VMμ΄ λ΄λΆμ μΌλ‘ μλ μΆμ μ μ¬μ©νμ§ μμκΈ° λλ¬Έμ μμ±μκ° λλ½λμμ΅λλ€.
deprecateMutationsInAutotrackingFrame
λμ°λ―Έλ‘ μ΄κ²μ λννμ¬ μ±μ΄ νκ·νλ κ²μ λ°©μ§νκΈ° μν΄ λΉλΆκ° μ΄μ€μ
λμ μ¬μ© μ€λ¨μ λμ§ μ μμ΅λλ€.
deprecateMutationsInAutotrackingFrame
λμ°λ―Έλ‘ μ΄κ²μ λννμ¬ μ±μ΄ νκ·νλ κ²μ λ°©μ§νκΈ° μν΄ λΉλΆκ° μ΄μ€μ λμ μ¬μ© μ€λ¨μ λμ§ μ μμ΅λλ€.
μ, μ΄κ²μ μλ―Έκ° μμ΅λλ€. μ§κΈμ μ°¨λ¨μ΄ ν΄μ λμ§λ§ κ·Όλ³Έμ μΈ λ¬Έμ λ₯Ό ν΄κ²°νλ €λ©΄ μ¬μ ν μ ν리μΌμ΄μ /μ λμ¨/λ±μ΄ νμν©λλ€(μΆμ 컨ν μ€νΈ λ΄μμ "μ½κΈ° ν μ°κΈ°"λ₯Ό μ§μν μ μμ).
Glimmer κ΅¬μ± μμμ ν¨κ» μ 곡ν μμ μ λκΉ?
μ, Glimmer κ΅¬μ± μμμ λλ€.
λ€μμ νμ¬ μ κ·Έλ μ΄λλ₯Ό μ°¨λ¨νκ³ μλ μ€μ λ¬Έμ μ μμ λλ€. https://github.com/GavinJoyce/backdrifts/pull/5
μμ±μμμ λͺ¨λΈ λ°μ΄ν°λ₯Ό λ³κ²½(μ΄ κ²½μ° addFragment
νΈμΆ)νλ κ²μ νμ€ν λ°ν¨ν΄μ
λλ€. κ²½λ‘ λλ μμ
λ¨κ³μμ λͺ¨λΈμ μμ±ν λ μ΄λ¬ν μ’
λ₯μ λͺ¨λΈ λμ°λ³μ΄λ₯Ό μνν κ°λ₯μ±μ΄ λ§€μ° λμ΅λλ€. . μ΄μ€μ
λμ μ§μ μ€λ¨μ λ΄λ³΄λ΄λ©΄ μ΄μ κ°μ λ¬Έμ κ° λ°μν μ±μ μ΄ λ¦¬ν©ν λ§μ μνν μκ°μ΄ μ£Όμ΄μ§λλ€.
μ΄μ€μ λμ μ§μ μ€λ¨μ λ΄λ³΄λ΄λ©΄ μ΄μ κ°μ λ¬Έμ κ° λ°μν μ±μ μ΄ λ¦¬ν©ν λ§μ μνν μκ°μ΄ μ£Όμ΄μ§λλ€.
μ λμ μΌλ‘ λμν©λλ€! μ€λ μμΉ¨μ μμ ν΄λ³΄λ €κ³ ν©λλ€.
μ΄λ€ μ μΌλ‘λ λμΈ μ μλ€λ©΄ LMK κ°μ¬ν©λλ€.
μ΄λ₯Ό μν΄μλ https://github.com/glimmerjs/glimmer-vm/pull/1205 μ μ μΆν glimmer-vm μ μΌλΆ λ³κ²½μ΄ νμνμ§λ§ Ember ν΅ν©(μ§μ μ€λ¨μ μν΄)μ https://githubμ μμ΅λλ€. com/emberjs/ember.js/pull/19282.
νμν Glimmer λ³κ²½ μ¬νμ λ°©κΈ μ°©λ₯νμΌλ©° λ΄μΌ 릴리μ€λ₯Ό μ»μΌλ €κ³ λ Έλ ₯ν κ²μ λλ€.
λͺ¨λ κ°μ²΄ μ νμ μ¬μ© μ€λ¨(vs assertion) λμμ΄ μλμ§ νμΈν΄μΌ νκΈ° λλ¬Έμ μλ μκ°νλ κ²λ³΄λ€ μ‘°κΈ λ 볡μ‘νμ΅λλ€. https://github.com/emberjs/ember.js/pull/19282 κ° λ§μΉ¨λ΄ κ²ν ν μ€λΉκ° λμμ΅λλ€.
λ€μ λ¨κ³λ λ€μν λ²μ μμ glimmer-vmμ λ³κ²½ μ¬νμ λ°±ν¬νΈνκ³ ν μ€νΈνλ κ²μ λλ€(κ°κ° λ΄λΆμ μΌλ‘ μ£Όμ λ³κ²½ μ¬νμ΄ μμ).
master
μ§μ λμ [email protected]beta
μ§μ λμ [email protected]release
λν μ§μ [email protected]beta
λΆκΈ°release
λΆκΈ°μμ§ 100% νμ ν μλ μμ§λ§ 3.23.1+μμ 릴리μ€ν κ°λ₯μ±μ΄ μμ΅λλ€(3.22λ λ μ΄μ νμ¬ λ¦΄λ¦¬μ€κ° μλκΈ° λλ¬Έμ). 3.22μμ μ΄μ λν νΉμ μꡬ μ¬νμ΄ μκ³ λμ 3.23μΌλ‘ μ λ°μ΄νΈν μ μλ μ¬λμ΄ μμ΅λκΉ?
3.23μΌλ‘ μ λ°μ΄νΈνκ² λμ΄ κΈ°μ©λλ€.
λ€λ₯Έ 컀νΌκ° νμν μλ μμ§λ§, μ°λ¦¬κ° νΌν΄μΌ ν ν¨ν΄μ μμ ν μ΄ν΄νμ§ λͺ»νλ€λ μ μ κ²Έμνκ² μΈμ ν©λλ€. getterμμ κ°μ μ€μ ν μλ₯Ό μ΄ν΄νμ§λ§ Gavinμ μκ° μ λμμ§ μ λͺ¨λ₯΄κ² μ΅λλ€(μ‘°κΈ κ³ μλ κ²μΌμ§λΌλ). λκ΅°κ°κ° λ¬Έμ λ₯Ό κ΅μ‘νλ λ° λμμ μ€ μ μμ΅λκΉ?
μ±μ 3.22 λλ 3.23μΌλ‘ μ κ·Έλ μ΄λνκΈ° μν΄ ν΄μΌ ν μΌμ΄ λ λ§μμ§ νμ€νμ§ μμ΅λλ€. μ°λ¦¬λ 3.22μμ μλ°± κ°μ μ€ν¨ν ν μ€νΈλ₯Ό κ°μ§κ³ μμΌλ©°, κ·Έ μ€ μλμ λ€μλ μ£Όμ₯μ μμΆμ νλ κ²μΌλ‘ 보μ λλ€. μ΄ μ£Όμ₯μ κ·νμ λ³κ²½μΌλ‘ μμ λκΈ°λ₯Ό λ°λλλ€. λ°λΌκ±΄λ μ°λ¦¬λ 3.21μμ 3.23.1λ‘ λ°λ‘ μ΄λν μ μμ΅λλ€.
μΆκ° λΆλ΄μ΄ ν¬μ§ μλ€λ©΄ 3.22.2λ μΆμνλ κ²μ΄ μ’μ§ μμκΉμ? ν λ²μ νλμ λ²μ μ μ κ·Έλ μ΄λνλ μ¬λλ€μ ν₯ν 골칫거리λ₯Ό μ€μΌ μ μμ΅λλ€.
μ°Έκ³ λ‘ μ λ μμ§μμ ember-beta ν μ€νΈλ₯Ό μ€νν λ μ΄κ²μ λ³΄κ³ μμ΅λλ€.
μλ° μ½λ:
<LinkToExternal @route="your-coach">{{@coachUser.firstName}}</LinkToExternal>
@jherdman μ΄ μ΅μ ember-engines μ½λλ₯Ό μ¬μ© μ€μΈμ§ νμΈνμμμ€. link-to-external
λ μ΄ μ£Όμ₯μ νΌνκΈ° μν΄ μ΅κ·Όμ μ
λ°μ΄νΈλμμ΅λλ€(https://github.com/ember-engines/ember-engines/pull/735).
λλ μ€μ λ‘ μμ§μ v0.8.8μ μλ€κ³ λ§νλ κ²μ μ κ°μ€λ½κ² μκ°ν©λλ€. μ΄ λ¬Έμ λ₯Ό νμ μν€κ³ μΆμ§ μμ΅λλ€. κ±°κΈ°μμ λ¬Έμ λ₯Ό μ΄μ΄μΌ ν©λκΉ?
λλ μ€μ λ‘ μμ§μ v0.8.8μ μλ€κ³ λ§νλ κ²μ μ κ°μ€λ½κ² μκ°ν©λλ€. μ΄ λ¬Έμ λ₯Ό νμ μν€κ³ μΆμ§ μμ΅λλ€. κ±°κΈ°μμ λ¬Έμ λ₯Ό μ΄μ΄μΌ ν©λκΉ?
μ, λΆνν©λλ€!
λ€λ₯Έ 컀νΌκ° νμν μλ μμ§λ§, μ°λ¦¬κ° νΌν΄μΌ ν ν¨ν΄μ μμ ν μ΄ν΄νμ§ λͺ»νλ€λ μ μ κ²Έμνκ² μΈμ ν©λλ€. getterμμ κ°μ μ€μ ν μλ₯Ό μ΄ν΄νμ§λ§ Gavinμ μκ° μ λμμ§ μ λͺ¨λ₯΄κ² μ΅λλ€(μ‘°κΈ κ³ μλ κ²μΌμ§λΌλ). λκ΅°κ°κ° λ¬Έμ λ₯Ό κ΅μ‘νλ λ° λμμ μ€ μ μμ΅λκΉ?
μ¬κΈ°μ κ°λ μ λ¬Έμ λ νμ¬ "μΆμ νλ μ"μμ μ΄λ―Έ μ½κ±°λ μλΉλ μΆμ λ κ°μ λ³κ²½ν λ μ΅μ’ λ λλ§λ κ°μ΄ μ ν¨νλ€λ κ²μ 보μ₯ν μ μλ€λ κ²μ λλ€. μλ₯Ό λ€μ΄ λ€μ μ€μ μ μμν΄ λ³΄μμμ€.
{{this.someService.randomTrackedProperty}}
μ‘μΈμ€ν©λλ€.<FooBar />
μ κ°μ κ΅¬μ± μμλ₯Ό νΈμΆν©λλ€.FooBar
μμ±μμμ this.someService.randomTrackedProperty = "hello!"
μ΄μ μ½κΈ° μΆμ κ°μ λ³κ²½νλ ν΄λΉ κ΅¬μ± μμλ ν΄λΉ κ°μ λν λ€λ₯Έ μ°Έμ‘°κ° μ΄μ μ ν¨νμ§ μμμ μλ―Έν©λλ€.
μμ Gavins μμμ κ·Έλ μΉ΄μ΄ν°λ₯Ό μ¦κ°μμΌ°μ΅λλ€. μ΄κ²μ λ°λμ κΈ°μ‘΄ κ°μ μ½μ λ€μ μ κ°μΌλ‘ μ λ°μ΄νΈνλ€λ κ²μ μλ―Έν©λλ€. κ°μ΄ κ΅¬μ± μμμ λν΄ λ‘컬μ΄κ³ μ΄ μμ μμ λ€λ₯Έ μ½λκ° "μλͺ»λ" λ²μ (λ³κ²½νκΈ° μ μ μ΄κΈ° λ²μ )μ μ‘μΈμ€ν μ μμκΈ° λλ¬Έμ κ·Έκ²μ΄ 무ν΄ν΄ 보μΈλ€λ κ²μ μκ³ μμ§λ§ μ€μ λ‘ λ μμ±μμ λν΄ νΉλ³ν κ²μ΄
μ¬κΈ°μμ λΉ λ₯Έ μ λ°μ΄νΈ, 3.23.1μ΄ μμ μ¬νκ³Ό ν¨κ» 릴리μ€λ©λλ€. λλ λ΄μΌ 3.22.xλ₯Ό μμ±νλ €κ³ λ Έλ ₯ν κ²μ λλ€(체리 λ°κΈ° λ¬Έμ μ λΆλͺμ³€μ΅λλ€).
μκ² μ΅λλ€. 3.22.2μ νκ·Έκ° μ§μ λμμΌλ©° 곧 NPMμ κ²μλμ΄μΌ ν©λλ€.
3.22.2μ νκ·Έλ₯Ό μ§μ ν΄ μ£Όμ μ κ°μ¬ν©λλ€. λ¨Όμ ν΄λΉ νλͺ©μΌλ‘ μ΄λνλ κ²μ΄ λμμ΄ λ κ²μ λλ€.
μ°Έκ³ λ‘, 10μκ° νμ NPMμ κ²μλμ§ μλ κ² κ°μ΅λλ€. https://www.npmjs.com/package/ember-source/v/3.22.2
λ°©κΈ μμ νμ΅λλ€. μ£μ‘ν©λλ€.
μ’μμ, κ°μ¬ν©λλ€!
κ°μ₯ μ μ©ν λκΈ
μ¬κΈ°μμ λΉ λ₯Έ μ λ°μ΄νΈ, 3.23.1μ΄ μμ μ¬νκ³Ό ν¨κ» 릴리μ€λ©λλ€. λλ λ΄μΌ 3.22.xλ₯Ό μμ±νλ €κ³ λ Έλ ₯ν κ²μ λλ€(체리 λ°κΈ° λ¬Έμ μ λΆλͺμ³€μ΅λλ€).