en
Feedback
ToCode

ToCode

Open in Telegram

讟讬驻讬诐 拽爪专讬诐 诇诪转讻谞转讬诐 诪讗转 讬谞讜谉 驻专拽

Show more
1 419
Subscribers
-124 hours
-17 days
-130 days
Posts Archive
ToCode
1 419
# 注讘讜讚转 爪讜讜转 讘讻诇 爪讜讜转 讬砖 讗转 讛讗讞转 砖诪拽讚诪转 注谞讬讬谞讬诐 拽爪转 讬讜转专 诪讛讗讞专讬诐. 诇讗 转诪讬讚 讗讜转讛 讗讞转 讘讻诇 讛驻专讜讬拽讟讬诐 讻诪讜讘谉, 讗讘诇 拽讞讜 拽讘讜爪讛 砖诇 讗谞砖讬诐, 砖讬诪讜 讗转 讻讜诇诐 讘讞讚专 诇讻诪讛 砖注讜转 讜转讙诇讜 诪讬砖讛讬 讗讞转 砖诪转讗诪爪转 拽爪转 讬讜转专, 诪讬砖讛讬 讗讞转 砖砖诪讛 诇讘 诇驻专讟讬诐 拽爪转 讬讜转专 诪讛讗讞专讬诐, 诪讬砖讛讬 讗讞转 砖诪讜讻谞讛 诇谞住讜转 讜诪爪讬注讛 专注讬讜谞讜转 拽爪转 讬讜转专 诪拽讜专讬讬诐 诪讛讗讞专讬诐. 讜讻诪讜讘谉 - 砖谞讛谞讬转 诪讛驻专讜讬拽讟 讬讜转专 诪讛讗讞专讬诐. 诇讗 谞讜诇讚讬诐 注诐 讝讛 讜讗驻讬诇讜 诇讗 讻讜诇诐 讬砖讬诪讜 诇讘 诇转讻讜谞讛 讛讝讗转, 讜注讚讬讬谉 讝讜 讗讞转 讛转讻讜谞讜转 讛讻讬 讞砖讜讘讜转 砖讗转诐 讬讻讜诇讬诐 诇驻转讞, 讜讛讚专讱 讛诪专讻讝讬转 诇拽讘诇 讘讬讟讞讜谉 转注住讜拽转讬 讛讬讜诐. 讘讬砖讬讘讛 讛讘讗讛 砖诇讻诐, 讘讛讗拽转讜谉 讛讘讗 砖诇讻诐, 讘 Team Programming 讗讜 Code Review 讛讘讗 砖诇讻诐 讗讜 讗驻讬诇讜 讘砖讘讜注 注讘讜讚讛 讛专讙讬诇 讗爪讻诇诐 讘注讘讜讚讛 谞住讜 诇砖讬诐 诇讘: 诪讬 讛讗谞砖讬诐 砖讗讬 讗驻砖专 讘诇注讚讬讛诐? 诪讛 讛诐 注砖讜 诪讬讜讞讚 讛砖讘讜注? 讜诪讛 讗谞讬 讬讻讜诇 诇谞住讜转 诇注砖讜转 砖讘讜注 讛讘讗 讻讚讬 诇讛讬讻谞住 诇诪讜注讚讜谉 讛讝讛?

ToCode
1 419
# 诪砖讛讜 诪拽讜诇拽诇 讘砖讗诇讜转 诪专讗讬讜谞讜转 注讘讜讚讛 讞讬驻砖转讬 讘砖讘讬诇 讞讘专 讘讙讜讙诇 JavaScirpt Interview Questions 讛砖讘讜注 讜讻诪注讟 拽讬讘诇转讬 讞讜诐. 讻诇 讛注诪讜讚 讛专讗砖讜谉 诪诇讗 讘砖讗诇讜转 砖讗谞讬 诪讜讻谉 诇讛讗诪讬谉 砖谞砖讗诇讜转 讘专讗讬讜谞讜转 注讘讜讚讛, 砖注讜讝专讜转 诇讛讘讬谉 诪讛 讛诪专讜讗讬讬谉 讬讜讚注 讛讬讜诐, 讜诇讗 注讜讝专讜转 讘讻诇诇 诇讛讘讬谉 讗讜 诇讛注专讬讱 讬讻讜诇转. 讚讜讙诪讗 专讗砖讜谞讛 讛讬讗 拽讬砖讜专 讘砖诐 37 Essential JavaScript Interview Questions and Answers. 讛砖讗诇讛 讛专讗砖讜谞讛 砖诐 讛讬讗 诪讛 讛讘注讬讛 注诐 讛讘讚讬拽讛:
typeof bar === "object"
讛诐 专讜爪讬诐 诇讘讚讜拽 砖讗转诐 讬讜讚注讬诐 砖讙诐 讛住讜讙 砖诇 null 讛讜讗 object. 讝讛 讛讬讛 讛讙讬讜谞讬 讗诐 诪讬砖讛讜 讛讬讛 讻讜转讘 讘拽讜讚 砖讗讬诇转讛 讻讝讗转, 讗讘诇 讛讗诪转 砖拽砖讛 诇讬 诪讗讜讚 诇讞砖讜讘 注诇 住讬讟讜讗爪讬讛 讘讛 讛讬讬转讬 讻讜转讘 砖讜专讛 讻讝讗转. 讬讜转专 诪讝讛, 讻讻诇 砖诪转讻谞转讬诐 讛讬讜诐 注讜讘专讬诐 诇讛砖转诪砖 讘砖驻讜转 砖讛谉 Type Safe 诇诪砖诇 TypeScript, 砖讗诇讛 讻讝讜 讛讜驻讻转 注讜讚 驻讞讜转 专诇讜讜谞讟讬转. 讗转诐 诪讜讝诪谞讬诐 诇讛讬讻谞住 讜诇讞讟讟 讘砖讗专 讛注诪讜讚 讜转讙诇讜 注讜讚 讛诪讜谉 拽讟注讬 拽讜讚 砖专讜讘诐 讛诪讜讞诇讟 诇讗 讛讙讬注讜 诪转讜讻谞讬讜转 JavaScript 讗诪讬转讬讜转 诪讜讚专谞讬讜转. 诪住驻专 3 讘专砖讬诪讛 诪讻讬诇 专砖讬诪讛 砖诇 50 砖讗诇讜转 诪专讗讬讜谞讜转 (讗转专 讘砖诐 讗讚讜专讬拽讛). 讛诐 驻讞讜转 讘拽讟注 砖诇 诇讛专讗讜转 拽讟注讬 拽讜讚 讜讘诪拽讜诐 砖讜讗诇讬诐 砖讗诇讜转 讻诪讜 "诪讛 讛讛讘讚诇 讘讬谉 call 诇 apply". 注讻砖讬讜 爪专讬讱 诇讛讙讬讚 讝讗转 砖讗诇讛 诪爪讜讬谞转 讜诇讚注转讬 讻诇 诪转讻谞转 JavaScript 爪专讬讱 诇讛讻讬专 讗转 讛转砖讜讘讛, 讜注讚讬讬谉 讗诐 讗谞讬 爪专讬讱 诇讛讞诇讬讟 注诐 讗讬讝讛 诪转讻谞转讬诐 诇注讘讜讚 拽砖讛 诇讛讗诪讬谉 砖讛讬讬转讬 诪砖转诪砖 讘砖讗诇讛 讻讝讜 讘转讜专 讗讬讝砖讛讜 驻专诪讟专. 讗讜转讜 讚讘专 诇讙讘讬 "讗讬讱 诇专讜拽谉 诪注专讱 讘 JavaScript" 讗讜 诪讛 注讜砖讛 Object.create. 讗谞讬 诇讗 讬讜讚注 讗讬讱 诇谞爪讞 讗转 讛诪砖讞拽 讛讝讛 砖诇 专讗讬讜谞讜转 注讘讜讚讛. 讗谞讬 诇讙诪专讬 讬讻讜诇 诇讛讘讬谉 诇诪讛 讗转诐 诇讗 专讜爪讬诐 诇讙讬讬住 讻诇 讗讞讚, 讜诇诪讛 讗转诐 驻讜讞讚讬诐 诇讙讬讬住 讗转 讛讘谉 讗讚诐 讛诇讗 谞讻讜谉. 讗谞讬 讙诐 诪讘讬谉 砖拽砖讛 诇讘讚讜拽 讘专讗讬讜谉 住拽专谞讜转, 讬讻讜诇转 诇讬诪讜讚, 讻讜砖专 专讬讻讜讝, 讬讻讜诇转 注讘讜讚讛 讘爪讜讜转 讜专爪讜谉 诇讛砖转驻专. 讜讘讻诇 讝讗转 讗驻砖专 诇谞住讜转: 讘诪拽讜诐 诇砖讗讜诇 诪讛 注讜砖讛 Object.create 讗讜诇讬 注讚讬祝 诇砖讗讜诇 - 讛驻拽讜讚讛 Object.create 讬讜爪专转 讗讜讘讬拽讟 讞讚砖 砖讛 Prototype 砖诇讜 诪讜讙讚专 诇讛讬讜转 讗讜讘讬拽讟 讗讞专. 讘讗讬讝讛 诪爪讘讬诐 谞专讗讛 诇讱 砖讛讬讬谞讜 诪砖转诪砖讬诐 讘讛? 讬砖 诇讱 专注讬讜谉 讗讬讱 诇诪诪砖 讗讜转讛 诪讗驻住? 讗讜 讘诪拽讜诐 诇砖讗讜诇 诪讛 讛讛讘讚诇 讘讬谉 call 诇 apply 讛讬讬转讬 砖讜讗诇 "讛驻拽讜讚讛 apply 诪拽讘诇转 驻讜谞拽爪讬讛, 诪砖转谞讛 this 讜诪注专讱 砖诇 驻专诪讟专讬诐 讜诪驻注讬诇讛 讗转 讛驻讜谞拽爪讬讛 注诐 讛诪砖转谞讛 this 讜诪注专讱 讛驻专诪讟专讬诐 砖讛注讘专谞讜. 讘讗讬讝讛 诪爪讘讬诐 谞专讗讛 诇讱 砖诪砖转诪砖讬诐 讘驻拽讜讚讛 讻讝讜? 讗讬讱 讛讬讬转 讘讜谞讛 诪谞讙谞讜谉 讻讝讛 诇讘讚?" 讜诪讛 砖讬驻讛 讘砖讗诇讜转 讻讗诇讛 砖讗讬谉 讘注讬讛 诇转转 诇诪专讜讗讬讬谉 讙讬砖讛 讞讜驻砖讬转 诇诪讞砖讘 讜讗讬谞讟专谞讟. 诪诪讬诇讗 讛转砖讜讘讛 诪住驻讬拽 诪讜专讻讘转 讻讱 砖讗讬 讗驻砖专 诇专诪讜转.

ToCode
1 419
# 砖诪讜转 讛诪谞讙谞讜谉 讛讗讛讜讘 注诇讬讬 讘专讬讗拽讟 谞拽专讗 dangerouslySetInnerHTML. 讝讛讜 诪讗驻讬讬谉 砖诇 拽讜诪驻讜谞谞讟讛 砖诪讘讟诇 讗转 讛讛讙谞讛 讛讟讘注讬转 砖诇 拽讜诪驻讜谞谞讟讜转 专讬讗拽讟 诪诪转拽驻讜转 XSS, 讗讘诇 讙诐 讛讻专讞讬 讻砖讗谞讞谞讜 专讜爪讬诐 诇讛爪讬讙 转讜讻谉 砖诇 诪砖转谞讛 讘转讜专 HTML 讘转讜讱 拽讜诪驻讜谞谞讟讛. 讘讙诇诇 砖讛爪讜讜转 砖诇 专讬讗拽讟 讬讚注 砖讗谞砖讬诐 讛讜诇讻讬诐 诇讛爪讟专讱 讗转 讛诪谞讙谞讜谉 讛讝讛 讜诇讛砖转诪砖 讘讜, 讛诐 讘讞专讜 诇讛讜住讬祝 讗转 讛讗讝讛专讛 讘爪讜专讛 砖讗讬 讗驻砖专 诇讘专讜讞 诪诪谞讛, 讻讞诇拽 诪砖诐 讛驻讜谞拽爪讬讛. 讛砖讜讜 讗转 讝讛 诇驻讜谞拽爪讬讛 toJS 砖诇 Immutable.JS - 讛驻讜谞拽爪讬讜转 fromJS 讜 toJS 诪砖诪砖讜转 诇讛诪专转 诪讘谞讛 谞转讜谞讬诐 诪诪讘谞讛 砖诇 Immutable JS 诇诪讘谞讛 专讙讬诇 砖诇 JavaScript, 讛诪专讛 砖诪爪专讬讻讛 住专讬拽转 注讜诪拽 砖诇 讻诇 诪讘谞讛 讛谞转讜谞讬诐 讜讛注转拽转 讻诇 讛谞转讜谞讬诐. 讗诇讛 驻讜谞拽爪讬讜转 砖讗诐 转砖转诪砖讜 讘讛谉 讬讛专讙讜 讗转 讛讘讬爪讜注讬诐 砖诇 讛讬讬砖讜诐 砖诇讻诐, 讜讘讞讬讘讜专 诇专讬讗拽讟 注讜砖讜转 谞讝拽 讻驻讜诇 讻讬 讛谉 诪拽诇拽诇讜转 讗转 讛 Referential Equality 讜讙讜专诪讜转 诇讝讛 砖爪专讬讱 诇专谞讚专 诪讞讚砖 讗转 讻诇 讛拽讜诪驻讜谞谞讟讜转 砖诇谞讜 (讻讬 讗谞讞谞讜 诇讗 讬讜讚注讬诐 诪讛 讘讗诪转 讛砖转谞讛). 诪讛 砖讬讜转专 讙专讜注 讛讜讗 砖诇 Immutable.JS 讬砖 诇诪注砖讛 砖转讬 驻讜谞拽爪讬讜转 讛诪专讛: 讛讗讞转 谞拽专讗转 toJS 讜讛砖谞讬讛 toJSON, 注诐 讛讘讚诇 拽专讬讟讬 讘讬谞讬讛谉. 讛驻讜谞拽爪讬讛 toJS 诪讘爪注转 讛注转拽讛 注诪讜拽讛 讜诇注讜诪转讛 toJSON 诪讘爪注转 讛注转拽讛 砖讟讞讬转 专拽 砖诇 讛专诪讛 讛专讗砖讜谞讛 讘讗讜讘讬拽讟. 讻诪讜 砖讗转诐 拽讜专讗讬诐 讗转 讛转讬注讜讚 专拽 讻砖讬砖 讘注讬讜转, 讻讱 讙诐 讛诪转讻谞转讬诐 砖讬砖转诪砖讜 讘 API 砖讗转诐 讻讜转讘讬诐. 砖讜讜讛 诇讛转讗诪抓 诇讞砖讜讘 注诇 砖诪讜转 砖讬讻诇诇讜 讗转 讛讗讝讛专讜转 讜讛讛诪诇爪讜转 诇砖讬诪讜砖 谞讻讜谉 讘爪讜专讛 砖讗讬 讗驻砖专 讬讛讬讛 诇讛转注诇诐 诪诪谞讛.

ToCode
1 419
# 讗讘诇 讗谞讬 讻讘专 讬讜讚注 专讬讗拽讟 讘谉 讗讚诐 诇讜拽讞 拽讜专住, 讻讜转讘 驻专讜讬拽讟 讙讚讜诇, 诪讜爪讗 注讘讜讚讛, 注讜讘讚 砖谞转讬讬诐 讘转讜专 诪驻转讞 讘讟讻谞讜诇讜讙讬讛 诪住讜讬诪转 讜讬砖 诇讜 拽讜专讜转 讞讬讬诐 注诐 谞讬住讬讜谉. 讞诇讜诐? 住讜祝 讛住讬驻讜专? 诪诪砖 诇讗. 讚谞讬 讗讜专讘讱 讻转讘 诇讗 诪讝诪谉 诪讚专讬讱 诇拽专讬讬专讛 讗拽讚诪讬转. 诪诪谞讜 讜诪注讜讚 讞讘专讬诐 诇诪讚转讬 砖讘讗拽讚诪讬讛 爪专讬讱 诇注讘讜讚 诪诪砖 拽砖讛 注讚 砖诪拽讘诇讬诐 诪砖专转 诪讞拽专 注诐 拽讘讬注讜转, 讜讗讞专讬 讝讛 讛诇讞抓 讬讜专讚 诪砖诪注讜转讬转. 诪专讙注 "砖讛讜讻讞转" 讗转 注爪诪讱 讘讗拽讚诪讬讛 讗转讛 讻讘专 谞砖讗专 砖诐. 讜讗爪诇谞讜? 讞讬讬诐 讛驻讜讻讬诐 诇讙诪专讬. 讗讬谉 砖讜诐 谞拽讜讚讛 讘讛 诪转讻谞转 讬讻讜诇 "诇讛讜专讬讚 讛讬诇讜讱" 讜诇讞讬讜转 注诇 转讛讬诇转 讛注讘专. 诇讗 诪砖谞讛 讻诪讛 诪专砖讬诪讬诐 讛拽讜专讜转 讞讬讬诐 砖诇讱, 讻砖转讙讬注 诇专讗讬讜谉 注讘讜讚讛 讛讜诇讻讬诐 诇讛驻讬诇 注诇讬讱 砖讗诇讜转 讟讻谞讬讜转 讜讗诇讙讜专讬转诪讬诐 讻讗讬诇讜 专拽 讗转诪讜诇 讬爪讗转 诪讛讗讜谞讬讘专住讬讟讛. 诇讗 诪砖谞讛 讻诪讛 砖谞讬诐 注讘讚转 讘诪拽讜诐 诪住讜讬诐, 诪讞专 讬讻讜诇讬诐 诇讛讬讜转 拽讬爪讜爪讬诐 讜转爪讟专讱 诇讞讝讜专 诇讞驻砖. 讜诪讛 砖注讜讚 讬讜转专 讙专讜注 讝讛 砖讛讟讻谞讜诇讜讙讬讛 诇讗 谞砖讗专转 讘诪拽讜诐. 讬讻讜诇 诇讛讬讜转 砖诇诪讚转 专讬讗拽讟 讜讗驻讬诇讜 讻转讘转 讘讝讛 驻专讜讬拽讟 讙讚讜诇, 讗讘诇 砖谞转讬讬诐 讗讞专 讻讱 拽讜讚 讛专讬讗拽讟 砖诇讱 (砖专拽 诇驻谞讬 砖谞转讬讬诐 讛讬讛 讛讚讘专 讛讻讬 讙讚讜诇 讜讞诐 讘砖讜拽) 谞专讗讛 讻诪讜 讚讬谞讜讝讗讜专. 拽爪讘 讛砖讬谞讜讬 讜注讜爪诪转讜 诪讞讬讬讘讬诐 讗讜转谞讜 讻诇 讛讝诪谉 诇诇诪讜讚 讗转 讗讜转诐 讛讚讘专讬诐 诪讞讚砖. 诪讛 注讜砖讬诐? 讗驻砖专 诇拽讟专. 讗驻砖专 诇讛讬砖讗专 讘拽讜讘讬讛 讜诇拽讜讜转 砖讛砖讬谞讜讬 讬讚诇讙 注诇讬讻诐. 讗驻砖专 诇诇诪讜讚 拽讜讘讜诇. 讗讜 砖讗驻砖专 诇拽讘诇 讗转 讛诪爪讬讗讜转 讜诇诪爪讜讗 讚专讱 诇砖诇讘 转讛诇讬讻讬 诇诪讬讚讛 讻诇 讛讝诪谉 讘注讘讜讚讛 讛砖讜讟驻转. 转讛诇讬讻讬诐 讻诪讜 驻讬转讜讞 驻专讜讬拽讟-爪讚, 拽讜专住 诪拽爪讜注讬, 讛砖转转驻讜转 讘诪讬讟讗驻讬诐 讗讜 讜讜讘讬谞专讬诐 讜拽专讬讗转 驻讜住讟讬诐 讞讚砖讬诐 讛诐 讞诇拽 讘诇转讬 谞驻专讚 诪讛讞讬讬诐 砖诇谞讜, 讙诐 讜讘诪讬讜讞讚 注诇 谞讜砖讗讬诐 砖讗谞讞谞讜 讻讘专 诪讻讬专讬诐. 谞.讘. 讘诪专抓 讗谞讬 诪转讻谞谉 诇驻转讜讞 诪住诇讜诇 诇讬诪讜讚 讻讝讛 砖讬砖诇讘 注讘讜讚讛 注诇 驻专讜讬拽讟-爪讚, 诇讬讜讜讬 砖诇 诪谞讟讜专 讜诪讬讟讗驻讬诐 讜讬专讟讜讗诇讬诐 讻讚讬 诇诇诪讜讚 讜诇讛砖转驻专 讘专讬讗拽讟. 讛诪住诇讜诇 诪转讗讬诐 诇诪转讻谞转讬诐 砖讻讘专 讬讜讚注讬诐 专讬讗拽讟, 讗讜 诇诪转讻谞转讬 JavaScript 砖专讜爪讬诐 诇讛讬讻谞住 诇注谞讬讬谞讬诐 讜讬讬诪砖讱 讞讜讚砖讬讬诐. 诇驻专讟讬诐 砖讜讜讛 诇讛注讬祝 诪讘讟 讘讚祝 讛拽讜专住 讘拽讬砖讜专: https://www.tocode.co.il/live_courses/1

ToCode
1 419
# 讛讗讜转讬讜转 讛拽讟谞讜转 讘拽讜专住 驻讬讬转讜谉 砖诇讬诪讚转讬 讛砖讘讜注 讞砖讘转讬 砖讬讛讬讛 谞讞诪讚 诇砖诇讘 砖讬诪讜砖 讘 Google Translate 讘讗讞讚 讛转专讙讜诇讬诐. 诇驻谞讬 讛拽讜专住 讞讬驻砖转讬 讘讙讜讙诇 讞讘讬诇讛 诇讙砖转 诪 Python 诇 Google Translate 讜讻诪讜讘谉 转讜爪讗讛 专讗砖讜谞讛 讛讬转讛 讞讘讬诇讛 讘砖诐 googletrans. 砖转讬讬诐 讜讞爪讬 讚拽讜转 砖诇 谞讬住讬讜谞讜转 讛住驻讬拽讜 讻讚讬 诇专讗讜转 砖讗谞讬 诪爪诇讬讞 诇转专讙诐 诪转讜讱 驻讬讬转讜谉 讜拽讚讬诪讛 诇拽讜专住 讻讚讬 诇转转 讙诐 诇转诇诪讬讚讬诐 诇砖讞拽 注诐 讛讞讘讬诇讛. 注砖专 讚拽讜转 诇转讜讱 讛转专讙讜诇 讻讘专 讛讬讛 讘专讜专 砖诪砖讛讜 诇讗 讛讜诇讱 诇驻讬 讛转讜讻谞讬转. 讛讜讚注讜转 讛砖讙讬讗讛 讛讞诇讜 诇讛讜驻讬注 注诇 讛诪住讻讬诐 讗讞讚 讗讞专讬 讛砖谞讬, 讻砖诇驻注诪讬诐 讙诐 转诇诪讬讚讬诐 砖讛爪诇讬讞讜 诇讻转讜讘 拽讜讚 砖注讜讘讚 驻转讗讜诐 讛转讞讬诇讜 诇拽讘诇 讗转 讗讜转讛 讛讜讚注转 砖讙讬讗讛 诪讜讝专讛. 讞讬讟讜讟 讝专讬讝 讘转讬注讜讚 讛专讗讛 诇谞讜 讗转 讛诪砖驻讟 讛讘讗 砖诪住讘讬专 诇讗 诪注讟 诪诪讛 砖拽专讛 砖诐: > ue to limitations of the web version of google translate, this API does not guarantee that the library would work properly at all times (so please use this library if you don鈥檛 care about stability). 讝讛 拽讟谉, 讝讛 讘住讜讙专讬讬诐, 讜讝讛 诪住讘讬专 讛讻诇. 讛讞讘讬诇讛 讛讬讗 诇讗 讚专讱 专砖诪讬转 诇讙砖转 诇 Google Translate. 讻讜转讘 讛讞讘讬诇讛 谞讬讙砖 诇诪诪砖拽 讛 Web 砖诇 讛砖讬专讜转, 讜讻砖谞讬住讬谞讜 诇讛专讬抓 讗转 讛砖讗讬诇转讜转 诪讛讻讬转讛 讛诪诪砖拽 讝讬讛讛 讗讜转谞讜 讘转讜专 诪转拽驻转 DOS 讜讞住诐 讗转 讛谞转讘 讛讻讬转转讬. 讘诪住讙专转 砖诇 拽讜专住 讜转专讙讬诇 讝讛 诇讗 谞讜专讗 讜讗驻讬诇讜 谞讞诪讚 砖讚讘专讬诐 诪转讙诇讙诇讬诐 讘爪讜专讛 讻讝讗转. 讝讛 谞转谉 诇谞讜 讛讝讚诪谞讜转 诇讚讘专 注诇 讞讘讬诇讜转 讘 pypi 讜注诇 讛讗拽讜住讬住讟诐 砖诇 驻讬讬转讜谉. 讘注讜诇诐 讛讗诪讬转讬 讻讚讗讬 诇讝讻讜专 讗转 讛诇拽讞 讛讝讛 讜诇拽专讜讗 讙诐 讗转 讛讗讜转讬讜转 讛拽讟谞讜转 诇驻谞讬 砖诪砖诇讘讬诐 讞讘讬诇讛 讘拽讜讚 砖诇讻诐, 讜讛讻讬 讟讜讘 - 诇讛注讬祝 讙诐 诪讘讟 讝专讬讝 讘拽讜讚 注爪诪讜 专拽 讻讚讬 诇讜讜讚讗 砖讛诪谞讙谞讜谉 诪转讗讬诐 诇讻诐.

ToCode
1 419
# 讘讜讗讜 谞讻转讜讘 诪砖讞拽 讝讬讻专讜谉 讘 React 注诐 useReducer 讗讞讚 讛砖讬诪讜砖讬诐 讛诪注谞讬讬谞讬诐 讘 useReducer 讛讜讗 注讘讜专 谞讬讛讜诇 State 诪讜专讻讘 砖诇 驻拽讚. 讗讝 谞讻讜谉 讗谞讞谞讜 转诪讬讚 谞注讚讬祝 诇驻爪诇 讗转 讛拽讜诪驻讜谞谞讟讜转 砖诇谞讜 诇拽讜诪驻讜谞谞讟讜转 拽讟谞讜转 讬讜转专 讜诇砖诪讜专 住讟讬讬讟 驻砖讜讟 讻诪讛 砖讗驻砖专, 讗讘诇 诇驻注诪讬诐 讛讞讬讬诐 讬讜爪讗讬诐 讬讜转专 诪住讜讘讻讬诐 诪诪讛 砖讻转讜讘 讘住驻专 讜诇驻注诪讬诐 讛讗诇讛 讻讚讗讬 砖讬讛讬讛 诇谞讜 驻讬转专讜谉 诪讜讻谉. 讛诪谞讙谞讜谉 砖诇 useReducer 谞讜注讚 诇诪爪讘讬诐 讘讛诐 讛 State 砖诇 拽讜诪驻讜谞谞讟讛 诪讜专讻讘 诪讛专讘讛 讗诇诪谞讟讬诐 拽砖讜专讬诐 讘讬谞讬讛诐 讜谞讜讞 诇谞讜 砖讬砖讘讜 讻讜诇诐 讘讗讜转讜 讗讜讘讬拽讟. 讘谞讜住祝 讻诇 驻注讜诇讛 注诇 讛住讟讬讬讟 讛讝讛 讬讻讜诇讛 诇讛砖驻讬注 注诇 讻诇 讛讗诇诪谞讟讬诐 讬讞讚. 讗谞讬 讞讜砖讘 砖讚讜讙诪讗 拽爪专讛 砖诇 诪砖讞拽 讝讬讻专讜谉 转注讝讜专 诇注砖讜转 住讚专 讘住讬驻讜专 讛讝讛. 讘诪砖讞拽 讝讬讻专讜谉 讬砖 诇谞讜 拽诇驻讬诐 砖讞诇拽诐 讙诇讜讬讬诐, 讞诇拽诐 谞住转专讬诐 讜讞诇拽诐 讙诇讜讬讬诐 讗讘诇 注讜讚 专讙注 讬讜住转专讜 砖讜讘 (讛拽诇驻讬诐 砖诇 讛转讜专 讛谞讜讻讞讬). 砖讞拽谉 讛讜驻讱 拽诇祝, 讜讗讝 注讜讚 讗讞讚 讜讗诐 讬砖 讛转讗诪讛 砖谞讬 讛拽诇驻讬诐 谞砖讗专讬诐 讙诇讜讬讬诐 诇谞爪讞, 讗讘诇 讗诐 讛诐 诇讗 诪转讗讬诪讬诐 讛诐 转讻祝 讬注诇诪讜 砖讜讘. 讘诪注讘专 诪讛转讬讗讜专讬讛 砖诇 讛诪砖讞拽 诇专讬讗拽讟 拽诇 诇讚诪讬讬谉 拽讜诪驻讜谞谞讟讛 注诐 住讟讬讬讟 砖谞专讗讛 讘注专讱 讻讱:
const initialState = {
  visibleCards: new Set(),
  currentTurn: new Set()
};
讻诇 诇讞讬爪讛 注诇 拽诇祝 诪讜住讬驻讛 讗讜转讜 诇 currentTurn, 讜讻砖讝讛 诪转诪诇讗 讗谞讞谞讜 (讗讜诇讬) 诪注讘讬专讬诐 讗转 讛拽诇驻讬诐 诪砖诐 诇 visibleCards 讜讘讻诇 诪拽专讛 诪讗驻住讬诐 讗转 讛 currentTurn. 讗转 讻诇 讛诇讜讙讬拽讛 讛讝讗转 讗谞讬 诪注讚讬祝 诇讗 诇讻转讜讘 讘转讜讱 拽讜讚 讛拽讜诪驻讜谞谞讟讛: 讗谞讬 讗讜讛讘 砖讛拽讜诪驻讜谞谞讟讜转 砖诇讬 讻讜诇诇讜转 讻诪讛 砖驻讞讜转 拽讜讚 讜诪转诪拽讚讜转 专拽 讘讗讬讱 诇讛爪讬讙 讗转 讛诪讬讚注 注诇 讛诪住讱. 讛讗诇讟专谞讟讬讘讛, 讻讗砖专 讬砖 诇讬 诇讜讙讬拽转 住讟讬讬讟 诪讜专讻讘转 砖拽砖讜专讛 诇拽讜诪驻讜谞谞讟讛 讘讜讚讚转 讛讬讗 讛驻讜谞拽爪讬讛 useReducer. 驻讜谞拽爪讬讬转 useReducer 诪讗驻砖专 诇讛讙讚讬专 讘诪拽讜诐 讗讞专 讘讬讬砖讜诐 驻讜谞拽爪讬讛 讘砖诐 reducer 砖讗讞专讗讬转 注诇 讛诇讜讙讬拽讛, 讜诇讞讘专 讗讜转讛 诇拽讜诪驻讜谞谞讟讛. 讘诪拽专讛 砖诇谞讜 讗驻砖专 诇讻转讜讘 讘拽讜讘抓 讗讞专 诇讙诪专讬 讗转 驻讜谞拽爪讬讬转 讛 reducer (讬讞讚 注诐 驻讜谞拽爪讬讬转 注讝专 拽爪专讛) 诇转讬讗讜专 讞讜拽讬 讛诪砖讞拽:
const reducer = produce((state, { type, payload }) => {
  const { cards } = payload;
  if (state.currentTurn.size === 2) {
    startNewTurn(state, cards);
  }

  if (type === "click") {
    const { idx } = payload;
    if (!state.currentTurn.has(idx) && !state.visibleCards.has(idx)) {
      state.currentTurn.add(payload.idx);
    }
  }
});

function startNewTurn(state, cards) {
  const turnCards = Array.from(state.currentTurn);
  if (turnCards.every(c => cards[c] === cards[turnCards[0]])) {
    state.visibleCards = new Set([...state.visibleCards, ...state.currentTurn]);
  }
  state.currentTurn = new Set();
}
拽诇 诪讗讜讚 注讻砖讬讜 诇讻转讜讘 转讜讻谞讬转 讘讚讬拽讛 专拽 注讘讜专 讛诇讜讙讬拽讛 讘诇讬 诇讛转讬讞住 讘讻诇诇 诇讗讬讱 讛诇讜讙讬拽讛 诪转讞讘专转 诇诪诪砖拽 诪砖转诪砖. 讗讞专讬 砖讛砖转讻谞注谞讜 砖讛诪谞讙谞讜谉 注讜讘讚 讗驻砖专 诇诇讻转 诇讻转讜讘 讗转 讛拽讜诪驻讜谞谞讟讛: fun
ction MemoryGame(props) {
  const { cards } = props;
  const [state, dispatch] = useReducer(reducer, initialState);

  function cardClasses(state, idx) {
    let res = "card";
    if (state.visibleCards.has(idx) || state.currentTurn.has(idx)) {
      res += " visible";
    }
    return res;
  }

  return (
    <div className="game">
      <ul>
        {cards.map((val, idx) => (
          <li
            className={cardClasses(state, idx)}
            onClick={() => dispatch({ type: "click", payload: { idx, cards } })}
          >
            {val}
          </li>
        ))}
      </ul>
    </div>
  );
}


诪讜讝诪谞讬诐 诇专讗讜转 (讜诇砖讞拽) 注诐 讛转讜爪讗讛 讘拽讜讚住谞讚讘讜拽住 讛讘讗, 砖讻讜诇诇 讙诐 拽爪转 CSS 讜讙诐 讗驻拽讟 砖诪住转讬专 讘讗讜驻谉 讗讜讟讜诪讟讬 讗转 讛拽诇驻讬诐 砖转讬 砖谞讬讜转 讗讞专讬 砖讛驻讻谞讜 讗讜转诐: https://codesandbox.io/s/billowing-river-tbmzu

ToCode
1 419
# 诪讬 讻转讘 讗转 讝讛 讘讻诇诇!? 讻砖讗谞讞谞讜 谞转拽诇讬诐 讘拽讜讚 砖讗讬谉 诇谞讜 诪讜砖讙 诪讗讬驻讛 讛讙讬注 讗讜 诇诪讛 讛讟诪讘诇 砖讻转讘 讗讜转讜 诇讗 讞砖讘 诇驻谞讬 砖讻转讘, 讻讚讗讬 诇讝讻讜专 砖讬砖 讬讜转专 诪住讬驻讜专 讗讞讚 讗驻砖专讬- 讬砖 拽讟注讬 拽讜讚 砖讘讗诪转 讛讘谉 讗讚诐 砖讻转讘 讗讜转诐 诇讗 讬讚注 诪住驻讬拽 讟讜讘 讜诇讻谉 讛诐 谞专讗讬诐 讻讱. 讗诐 讛讜讗 讛讬讛 讬讜讚注 诪讛 砖讗转 讬讜讚注转 讛讬讜诐 讛拽讜讚 讛讬讛 谞专讗讛 讗讞专转. 讜讬砖 讙诐 拽讟注讬 拽讜讚 砖讛讘谉 讗讚诐 砖讻转讘 讗讜转诐 讚讜讜拽讗 讬讚注 讛专讘讛 讬讜转专 诪诪讱: 讛讜讗 注砖讛 讘讚讬拽讜转 诪讗讜讚 诪注诪讬拽讜转 讜讙讬诇讛 砖讛诪谞讙谞讜谉 讛讛讝讜讬 砖讻转讘 讛讜讗 讛专讘讛 讬讜转专 讬注讬诇 讘诪拽专讛 讛住驻爪讬驻讬 砖讛诪注专讻转 爪专讬讻讛 诇讟驻诇 讘讜, 讗讜 砖讬砖 讗讬讝讛 住讬讘讜讱 讘讛诪砖讱 讛讚专讱 砖诇讗 讬讗驻砖专 诇讛砖转诪砖 讘驻讬转专讜谉 讛讛讙讬讜谞讬. 讜讻诪讜讘谉 讬砖 讙诐 诪爪讘讬诐 砖讛注讜诇诐 诪砖转谞讛: 砖讛讚讘专讬诐 砖讛讬讜 谞讻讜谞讬诐 讘讝诪谉 砖讛拽讜讚 谞讻转讘 讻讘专 诇讗 谞讻讜谞讬诐 讛讬讜诐. 讛专讘讛 驻注诪讬诐 诪讜注讬诇 诇讛砖拽讬注 讗转 讛讝诪谉 讘诇讛讘讬谉 讗转 讛驻讬转专讜谉 讛讬砖谉 注诇 讻诇 讛诪讜专讻讘讜讬讜转 砖讘讜 诇驻谞讬 砖讝讜专拽讬诐 讛讻诇 诇驻讞 讜诪转讞讬诇讬诐 诇讬讬爪专 诪砖讛讜 讞讚砖.

ToCode
1 419
# 诪讬 讻转讘 讗转 讝讛 讘讻诇诇!? 讻砖讗谞讞谞讜 谞转拽诇讬诐 讘拽讜讚 砖讗讬谉 诇谞讜 诪讜砖讙 诪讗讬驻讛 讛讙讬注 讗讜 诇诪讛 讛讟诪讘诇 砖讻转讘 讗讜转讜 诇讗 讞砖讘 诇驻谞讬 砖讻转讘, 讻讚讗讬 诇讝讻讜专 砖讬砖 讬讜转专 诪住讬驻讜专 讗讞讚 讗驻砖专讬- 讬砖 拽讟注讬 拽讜讚 砖讘讗诪转 讛讘谉 讗讚诐 砖讻转讘 讗讜转诐 诇讗 讬讚注 诪住驻讬拽 讟讜讘 讜诇讻谉 讛诐 谞专讗讬诐 讻讱. 讗诐 讛讜讗 讛讬讛 讬讜讚注 诪讛 砖讗转 讬讜讚注转 讛讬讜诐 讛拽讜讚 讛讬讛 谞专讗讛 讗讞专转. 讜讬砖 讙诐 拽讟注讬 拽讜讚 砖讛讘谉 讗讚诐 砖讻转讘 讗讜转诐 讚讜讜拽讗 讬讚注 讛专讘讛 讬讜转专 诪诪讱: 讛讜讗 注砖讛 讘讚讬拽讜转 诪讗讜讚 诪注诪讬拽讜转 讜讙讬诇讛 砖讛诪谞讙谞讜谉 讛讛讝讜讬 砖讻转讘 讛讜讗 讛专讘讛 讬讜转专 讬注讬诇 讘诪拽专讛 讛住驻爪讬驻讬 砖讛诪注专讻转 爪专讬讻讛 诇讟驻诇 讘讜, 讗讜 砖讬砖 讗讬讝讛 住讬讘讜讱 讘讛诪砖讱 讛讚专讱 砖诇讗 讬讗驻砖专 诇讛砖转诪砖 讘驻讬转专讜谉 讛讛讙讬讜谞讬. 讜讻诪讜讘谉 讬砖 讙诐 诪爪讘讬诐 砖讛注讜诇诐 诪砖转谞讛: 砖讛讚讘专讬诐 砖讛讬讜 谞讻讜谞讬诐 讘讝诪谉 砖讛拽讜讚 谞讻转讘 讻讘专 诇讗 谞讻讜谞讬诐 讛讬讜诐. 讛专讘讛 驻注诪讬诐 诪讜注讬诇 诇讛砖拽讬注 讗转 讛讝诪谉 讘诇讛讘讬谉 讗转 讛驻讬转专讜谉 讛讬砖谉 注诇 讻诇 讛诪讜专讻讘讜讬讜转 砖讘讜 诇驻谞讬 砖讝讜专拽讬诐 讛讻诇 诇驻讞 讜诪转讞讬诇讬诐 诇讬讬爪专 诪砖讛讜 讞讚砖.

ToCode
1 419
# 讗讬讱 拽讜专讗讬诐 拽讜讘抓 CSV 诪转讜讱 驻讬讬转讜谉 讛诪讜讚讜诇 csv 砖诇 驻讬讬转讜谉 谞讜转谉 诇谞讜 驻讬转专讜谉 诪诪砖 驻砖讜讟 讻砖讗谞讞谞讜 专讜爪讬诐 诇拽专讜讗 拽讜讘抓 CSV 讜诇讙砖转 诇砖讚讜转 砖诇讜 诪转讜讱 转讜讻谞讬转 驻讬讬转讜谉. 砖讬诪讜 诇讘 诇转讜讻谞讬转 讛讚讜讙诪讗 讛讘讗讛 砖拽讜专讗转 拽讜讘抓 讘砖诐 my.csv:
import csv
with open('my.csv', encoding='utf8', newline='') as csvfile:
    reader = csv.reader(csvfile)
    for row in reader:
        print(row[-1])
谞拽专讗 讗转 讛转讜讻谞讬转 砖讜专讛 讗讞专 砖讜专讛: 1. 讛驻拽讜讚讛 import 诪讬讬讘讗转 讗转 讛诪讜讚讜诇 csv 诇转讜讻谞讬转. 诪讜讚讜诇 讝讛 诪讙讬注 注诐 驻讬讬转讜谉 讜诇讗 讚讜专砖 砖讜诐 讛转拽谞讛 诪讬讜讞讚转. 讛诪讜讚讜诇 诪住驻拽 诇谞讜 诪诪砖拽 诇注讘讜讚讛 注诐 诪讬讚注 讘驻讜专诪讟 CSV. 2. 讛驻拽讜讚讛 讛砖谞讬讛 驻讜转讞转 讗转 讛拽讜讘抓 my.csv 讜砖讜诪专转 讗转 讛拽讬砖讜专 讗诇讬讜 讘诪砖转谞讛 讘砖诐 csvfile. 讘讙诇诇 砖讛拽讜讘抓 谞驻转讞 讘转讜讱 讘诇讜拽 with, 讘住讬讜诐 讛讘诇讜拽 讘讗讜驻谉 讗讜讟讜诪讟讬 讛拽讜讘抓 讬讬住讙专 讘住讬讜诐 讛讘诇讜拽. 诪讬诇转 讛诪驻转讞 encoding 转注讝讜专 诇驻讬讬转讜谉 诇讛转诪讜讚讚 注诐 拽讜讘抓 讘讻诇 砖驻讛 讜诪讬诇转 讛诪驻转讞 newline 讙讜专诪转 诇拽讜讘抓 诇讗 诇讟驻诇 讘砖讜专讜转 讞讚砖讜转 (讻讬 讛诪讜讚讜诇 CSV 讬讛讬讛 讝讛 砖讬讟驻诇 讘讛谉). 3. 讛驻拽讜讚讛 讛砖诇讬砖讬转 讬讜爪专转 讗讜讘讬拽讟 诪住讜讙 CSV Reader. 讗讜讘讬拽讟 讝讛 诪拽讘诇 讞讬讘讜专 诇拽讜讘抓 (讗讜 诪讬讚注 讚诪讜讬-拽讜讘抓) 讜讬讗驻砖专 诇谞讜 诇拽专讜讗 讗转 讛诪讬讚注 砖讜专讛 讗讞专 砖讜专讛. 讛讗讜讘讬拽讟 讘注爪诐 讛讜驻讱 讗转 讛诪讬讚注 诪"砖讜专转 讟拽住讟" 诇"专砖讬诪转 注专讻讬诐". 4. 讘驻拽讜讚讛 讛专讘讬注讬转 讗谞讞谞讜 专爪讬诐 讘诇讜诇讗讛 注诇 讻诇 讛砖讜专转 讘 Reader. 讻诇 砖讜专讛 诪转拽讘诇转 讘转讜专 专砖讬诪转 注专讻讬诐 诇诪砖转谞讛 row. 5. 讘驻拽讜讚讛 讛讞诪讬砖讬转 讘砖讘讬诇 讛讚讜讙诪讗 讗谞讬 诪讚驻讬住 讗转 讛转讗 讛讗讞专讜谉 讘砖讜专讛. 讛注讘讜讚讛 讚专讱 讛诪讜讚讜诇 CSV 注讚讬驻讛 注诇 谞讬住讬讜谉 诇讞诇拽 讗转 讛诪讬讚注 诇讘讚 诇转讗讬诐 讻讬讜讜谉 砖诪讜讚讜诇 csv 讻讘专 诪讟驻诇 讘砖讘讬诇谞讜 讘诪爪讘 砖转讜 讛讛驻专讚讛 (讛驻住讬拽) 诪讜驻讬注 讘转讜讱 诪专讻讗讜转 讘转讜讱 讗讞讚 讛转讗讬诐. 讛讜讗 讙诐 诪讗驻砖专 诇拽讘讜注 诪讛 讬讛讬讛 转讜 讛讛驻专讚讛 讜驻专诪讟专讬诐 谞讜住驻讬诐 砖诇 讛拽专讬讗讛, 讜讗驻讬诇讜 诇讟注讜谉 讗转 讛诪讬讚注 诇转讜讱 诪讬诇讜谉 讘诪拽讜诐 诇转讜讱 专砖讬诪讛. 诇诪讬讚注 谞讜住祝 注诇 CSV Reader 砖讜讜讛 诇讛注讬祝 诪讘讟 讘转讬注讜讚 讘拽讬砖讜专: https://docs.python.org/3.8/library/csv.html#id3

ToCode
1 419
# 讛诪讞砖讛 驻砖讜讟讛 讻讚讬 诇讛讘讬谉 诇诪讛 爪专讬讱 诇讛注讘讬专 驻讜谞拽爪讬讛 诇 setState 讘 React 讛驻讜谞拽爪讬讛 setState 砖诇 拽讜诪驻讜谞谞讟转 专讬讗拽讟 (讗讜 讘讙讬专住讗 讛诪讜讚专谞讬转 砖诇讛, 讛驻讜谞拽爪讬讛 useState) 讗讞专讗讬转 注诇 砖讬谞讜讬 讛诪爪讘 讛驻谞讬诪讬 砖诇 讛拽讜诪驻讜谞谞讟讛. 讗驻砖专 诇讛注讘讬专 讗诇讬讛 讻驻专诪讟专 注专讱 拽讘讜注 讗讜 驻讜谞拽爪讬讬转 注讚讻讜谉, 讻讗砖专 讗诐 诪注讘讬专讬诐 注专讱 拽讘讜注 讗讝 讛讬讗 诪砖谞讛 讗转 讛诪爪讘 讛驻谞讬诪讬 诇注专讱 砖讛注讘专谞讜, 讜讗诐 诪注讘讬专讬诐 驻讜谞拽爪讬讬转 注讚讻讜谉 讛讬讗 转驻注讬诇 讗转 驻讜谞拽爪讬讬转 讛注讚讻讜谉 注诐 讛注专讱 砖注讻砖讬讜 砖诪讜专 讘住讟讬讬讟 讻讚讬 诇拽讘诇 讗转 讛注专讱 讛讞讚砖. 诇讛专讘讛 讗谞砖讬诐 砖诪转讞讬诇讬诐 注诐 专讬讗拽讟 讬爪讗 诇注砖讜转 讗转 讛讟注讜转 讛讘讗讛 讘 Class Component:
class Counter {
  constructor() {
    this.state = { count: 0 };
  }

  inc = () => {
    this.setState({ count: this.state.count + 1 });
  }

  render() {
    return (
      <button onClick={this.inc}>{this.state.count}</button>
    );
  }
}
砖讝讛讛 诇讟注讜转 讛讘讗讛 讘 Functional Component:
function Counter() {
  const [count, setCount] = useState(0);

  function inc() {
    setCount(count + 1);
  }

  return (
    <button onClick={inc}>{count}</button>
  );
}
讘砖谞讬 讛诪拽专讬诐 讗谞讞谞讜 诪注讘讬专讬诐 注专讱 拽讘讜注 诇 setState 讻砖讘注爪诐 讛讬讬谞讜 爪专讬讻讬诐 诇讛注讘讬专 驻讜谞拽爪讬讛. 讛拽讜讚 注讜讘讚 讗讘诇 诪专讙讬砖 诇讗 讟讘注讬. 讘讗诪爪注讜转 砖讻转讜讘 拽讟谉 讗谞讬 讞讜砖讘 砖拽诇 诇专讗讜转 诇诪讛 讝讛 讻诇 讻讱 爪讜专诐:
function Counter() {
  const [count, setCount] = useState(0);

  function inc() {
    const nextValue = count + 1;
    setCount(nextValue);
    setCount(nextValue);
  }

  return (
    <button onClick={inc}>{count}</button>
  );
}
讗讜 讘讙讬专住转 讛拽诇讗住讬诐:
class Counter {
  constructor() {
    this.state = { count: 0 };
  }

  inc = () => {
    const nextValue = this.state.count + 1;
    this.setState({ count: nextValue });
    this.setState({ count: nextValue });
  }

  render() {
    return (
      <button onClick={this.inc}>{this.state.count}</button>
    );
  }
}
讛注专讱 砖诇 nextValue 诪讞讜砖讘 专拽 驻注诐 讗讞转 讘转讞讬诇转 讛驻讜谞拽爪讬讛 讜诇讻谉 砖转讬 驻拽讜讚讜转 讛 set 讬砖诪专讜 讘讚讬讜拽 讗转 讗讜转讜 注专讱. 讗驻讬诇讜 讗诐 谞讻转讜讘 讗转 讛拽讜讚 转讜讱 讙讬砖讛 讬砖讬专讛 诇住讟讬讬讟 讛讛转谞讛讙讜转 转讬砖讗专 讝讛讛:
  inc = () => {
    this.setState({ count: this.state.count + 1 });
    this.setState({ count: this.state.count + 1 });
  }
讗谞讬 讞讜砖讘 砖诪讛 砖讛讬讛 拽爪转 诪讜讝专 讘 Class Component 讜讛驻讱 诇诪讗讜讚 讘专讜专 讘诪注讘专 诇 Hooks 讛讜讗 砖讛驻讜谞拽爪讬讛 setState 诇讗 诪砖谞讛 讗转 讛住讟讬讬讟 讘讗讜驻谉 诪讬讬讚讬 讗诇讗 专拽 讘驻注诐 讛讘讗讛 砖讬拽专讗 render 讗讝 谞拽讘诇 讗转 讛住讟讬讬讟 讛注讚讻谞讬.