Đây là 1 điều ở trong docs của Vue đã nói tới nhé e, gọi là One Way Data flow. Data truyền từ cha xuống con thông qua props, thì nó sẽ chỉ chảy (flow) từ cha xuống, chứ không chảy cả theo chiều ngược lại, điều này tránh việc e mutate trực tiếp props ở con, làm data ở cha thay đổi (mà không qua emit).
Do với ở bài của e, e truyền vào như kia thì chúng chỉ làm giá trị khởi đầu cho con thôi, kể từ sau thì props thay đổi data của con sẽ ko reactive nữa
Thế tại sao this.heySon vẫn reactive??
Ở ngay trong docs kia có note luôn rằng: nếu e truyền array hoặc object từ cha vào con thì vì chúng được truyền xuống bằng địa chỉ (reference), nên cha thay đổi sẽ thấy con reactive ngay, hay nói cách khác, ở đây con có thể thay đổi trực tiếp props dẫn tới data ở phía cha cũng bị thay đổi theo --->> Flow của app bắt đầu bị rối rắm
Do đó a đoán là heySon của e ở cha đang là object hoặc array nên sẽ được truyền xuống con bằng địa chỉ (pass-by-reference) còn heyNeighbor đang là number, string hoặc boolean (truyền xuống bằng giá trị, pass-by-value, sẽ không reactive theo cha)
Giải pháp cho việc này
Việc heySon đang bị truyền vào bằng địa chỉ như kia sẽ làm cho con có thể thay đổi trực tiếp props mà không thông qua emit. Đồng thời a hiểu ý định của e là "truyền props trực tiếp vào data của con, để khi props thay đổi thì data của con cũng reactive theo", nhưng điều này vô hình chung sẽ làm flow của app sẽ rối, không đúng với tư tưởng của Vue là props down, event up (ý là data từ cha xuống con thì qua props, còn con lên cha thì qua emit) và hậu quả là dễ sinh ra lỗi (như lỗi e đang gặp phải vậy ).
Cách giải quyết a thường chọn là ở con, e watch props từ cha hoặc dùng computed rồi update vào data của con. Demo:
<script>// Parent.vueimport Child from'./Child'exportdefault{
components:{
Child
},data:()=>{return{
heySon:{
name:'MTD',
age:25},
heyNeighbor:456};},
methods:{updateSonAge(){this.heySon.age = Math.random()},updateNeighbor(){this.heyNeighbor = Math.random()}},}</script><script>// Child.vueexportdefault{
props:['heySon','heyNeighbor'],data(){return{
foot:{...this.heySon },// tạo giá trị khởi đầu sẽ ko bị reactive theo cha vì đây là object mới
hands:{
leftHand:this.heyNeighbor // tạo giá trị khởi đầu, ko bị reactive theo cha vì đây là number}}},
watch:{
heySon:{
deep:true,handler(){this.foot ={...this.heySon }// chỗ này vẫn phải dùng "..." nếu không là `foot` sẽ có cùng địa chỉ với `heySon` và khi con update thì cha sẽ tự update theo}},heyNeighbor(){this.hands.leftHand =this.heyNeighbor
}}// hoặc dùng computed
computed:{hands(){return{
leftHand:this.heyNeighbor
}}}}</script>
Ở trên thì foot và hands sẽ reactive theo props từ cha, nhưng khi e bind foot và hands và khi giá trị của chúng thay đổi từ phía con thì data sẽ không tự truyền lại cha, mà e cần phải dùng emit để đồng bộ (nếu e cần thiết điều đó)
Chú ý nữa rằng ở con nếu e thay đổi trực tiếp giá trị của 1 thuộc tính của heySon (nested props) thì sẽ không thấy báo lỗi Avoid mutating a prop directly - ko đc thay đổi props, mặc dù thực tế ta đang thay đổi giá trị thuộc tính của nó. Đây là 1 vấn đề đã đc Evan giải thích ở đây. Mặc dù đây ko phải là lỗi nhưng vẫn ko khuyến khích dùng cách này. Cứ muốn thay đổi data của cha thì luôn dùng emit nhé e.
Hello anh, lại là em đây, một fan của anh . Nay em đã đi thực tập và đang chiến đấu ở vị trí frontend dev (vuejs). Tuy nhiên nay em có gặp một trường hợp tuy đã tìm ra lời giải nhưng em không thể biết được nguyên nhân và cách làm của mình đã tối ưu hay chưa. Giờ muốn hỏi anh ạ.
Cụ thể là em sẽ có 2 component cha con giao tiếp với nhau, nhưng vì một lí do nào đó (mà em không biết ) thì dữ liệu nó không reactive theo ý em muốn và nó chỉ hoạt động như em mô tả dưới hình ạ.
Và sau một hồi loay hoay thì cách khắc phục của em đó là bind thằng "key" vào thằng con, mỗi khi thằng cha thay đổi -> random ra một key -> thằng component con render lại. Vậy em muốn hỏi là liệu cách làm vậy có đúng và nguyên nhân của việc data trong thằng con k reactive ạ. Em cảm ơn.
Khi soft delete thì deleting nó chạy và updating nó cũng chạy, có cách nào soft delete thì chỉ deleting nó chạy còn updating nó không chạy không vậy bạn?
Bạn viết rất có tâm, nhiệt huyết và dễ hiểu. Dài mà chất lượng như vậy thì cũng đáng. Những bạn ngoài ngành hoặc mới bắt đầu rất cần những nội dung chi tiết đến bản chất kiểu như vầy. Cảm ơn bạn rất nhiều.
THẢO LUẬN
Anh chị nào cần tư vấn về ChatBot cho page liên hệ trực tiếp qua: SĐT: 0912543223 hoặc zalo: 0912543223. Em sẽ hỗ trợ 24/7 ạ
Mọi người có thể tham khảo thêm ở đây ạ https://aha.chat/S7SYJQ
tham khảo thêm ở đây ạ https://aha.chat/S7SYJQ
em bị lỗi như này là sao ạ Undefined property: App\Http\Controllers\VnpayController::$apSer
https://ahachat.com/ chatbot xịn xò nè mọi người
Chào e,
Đây là 1 điều ở trong docs của Vue đã nói tới nhé e, gọi là One Way Data flow. Data truyền từ cha xuống con thông qua
props, thì nó sẽ chỉchảy(flow) từ cha xuống, chứ không chảy cả theo chiều ngược lại, điều này tránh việc emutatetrực tiếp props ở con, làm data ở cha thay đổi (mà không quaemit).Do với ở bài của e, e truyền vào như kia thì chúng chỉ làm giá trị khởi đầu cho con thôi, kể từ sau thì props thay đổi data của con sẽ ko reactive nữa
Thế tại sao
this.heySonvẫn reactive??Ở ngay trong docs kia có note luôn rằng: nếu e truyền array hoặc object từ cha vào con thì vì chúng được truyền xuống bằng địa chỉ (reference), nên cha thay đổi sẽ thấy con reactive ngay, hay nói cách khác, ở đây con có thể thay đổi trực tiếp props dẫn tới
dataở phía cha cũng bị thay đổi theo --->> Flow của app bắt đầu bị rối rắmDo đó a đoán là
heySoncủa e ở cha đang là object hoặc array nên sẽ được truyền xuống con bằng địa chỉ (pass-by-reference) cònheyNeighborđang là number, string hoặc boolean (truyền xuống bằng giá trị, pass-by-value, sẽ không reactive theo cha)Giải pháp cho việc này
Việc
).
heySonđang bị truyền vào bằng địa chỉ như kia sẽ làm cho con có thể thay đổi trực tiếp props mà không thông quaemit. Đồng thời a hiểu ý định của e là "truyền props trực tiếp vào data của con, để khi props thay đổi thì data của con cũng reactive theo", nhưng điều này vô hình chung sẽ làm flow của app sẽ rối, không đúng với tư tưởng của Vue làprops down, event up(ý là data từ cha xuống con thì qua props, còn con lên cha thì quaemit) và hậu quả là dễ sinh ra lỗi (như lỗi e đang gặp phải vậyCách giải quyết a thường chọn là ở con, e
watchprops từ cha hoặc dùngcomputedrồi update vàodatacủa con. Demo:Ở trên thì
footvàhandssẽ reactive theo props từ cha, nhưng khi e bindfootvàhandsvà khi giá trị của chúng thay đổi từ phía con thì data sẽ không tự truyền lại cha, mà e cần phải dùngemitđể đồng bộ (nếu e cần thiết điều đó)Chú ý nữa rằng ở con nếu e thay đổi trực tiếp giá trị của 1 thuộc tính của
heySon(nested props) thì sẽ không thấy báo lỗiAvoid mutating a prop directly-ko đc thay đổi props, mặc dù thực tế ta đang thay đổi giá trị thuộc tính của nó. Đây là 1 vấn đề đã đc Evan giải thích ở đây. Mặc dù đây ko phải là lỗi nhưng vẫn ko khuyến khích dùng cách này. Cứ muốn thay đổi data của cha thì luôn dùngemitnhé e.Nếu thấy hay cho mình xin 1like, comment để mình biết có động lực để viết bài ạ
@nguyenhuukhuyenudn em cảm ơn ạ
Hello anh, lại là em đây, một fan của anh
. Nay em đã đi thực tập và đang chiến đấu ở vị trí frontend dev (vuejs). Tuy nhiên nay em có gặp một trường hợp tuy đã tìm ra lời giải nhưng em không thể biết được nguyên nhân và cách làm của mình đã tối ưu hay chưa. Giờ muốn hỏi anh ạ.
Cụ thể là em sẽ có 2 component cha con giao tiếp với nhau, nhưng vì một lí do nào đó (mà em không biết
) thì dữ liệu nó không reactive theo ý em muốn và nó chỉ hoạt động như em mô tả dưới hình ạ.

Và sau một hồi loay hoay thì cách khắc phục của em đó là bind thằng "key" vào thằng con, mỗi khi thằng cha thay đổi -> random ra một key -> thằng component con render lại. Vậy em muốn hỏi là liệu cách làm vậy có đúng và nguyên nhân của việc data trong thằng con k reactive ạ. Em cảm ơn.
bạn hiểu vấn đề này như thế nào
Bài viết hay quá
https://stackoverflow.com/questions/5121495/php-code-is-not-being-executed-instead-code-shows-on-the-page bạn tham khảo ở đây xem nhé
đường dẫn config mặc định của apache /etc/apache2/sites-available/000-default.conf
hình như apache của b chưa run được php, bạn xem lại config apache nhé
bao giờ có phần 5 ạ
Mình không thấy hàm "module.prune" có trong pytorch nhỉ?
Khi soft delete thì deleting nó chạy và updating nó cũng chạy, có cách nào soft delete thì chỉ deleting nó chạy còn updating nó không chạy không vậy bạn?
Bạn viết rất có tâm, nhiệt huyết và dễ hiểu. Dài mà chất lượng như vậy thì cũng đáng. Những bạn ngoài ngành hoặc mới bắt đầu rất cần những nội dung chi tiết đến bản chất kiểu như vầy. Cảm ơn bạn rất nhiều.
Sr bạn, mình đang bị con lười nhập
ai cũng nghĩ mình làm ở Sun hết á
. Thực tế là mình chưa làm ở đó bao giờ.
Chắc do mình active trên Viblo
