uz
Feedback
ToCode

ToCode

Kanalga Telegramโ€™da oโ€˜tish

ื˜ื™ืคื™ื ืงืฆืจื™ื ืœืžืชื›ื ืชื™ื ืžืืช ื™ื ื•ืŸ ืคืจืง

Ko'proq ko'rsatish
1 419
Obunachilar
Ma'lumot yo'q24 soatlar
Ma'lumot yo'q7 kunlar
+130 kunlar
Postlar arxiv
ToCode
1 419
# ืงืจื™ืื” ืžื•ื“ืจื›ืช ื‘ืคื•ื ืงืฆื™ื” groupBy ืž lodash ืœืงืจื•ื ืงื•ื“ ืฉืœ ืื—ืจื™ื ื–ื• ื“ืจืš ื˜ื•ื‘ื” ืœืงื‘ืœ ืจืขื™ื•ื ื•ืช, ืœืœืžื•ื“ Best Practices ื•ื’ื ืœืจืื•ืช ืฉื˜ื•ื™ื•ืช ืฉืื—ืจื™ื ืขื•ืฉื™ื ื›ื“ื™ ืœื”ืจื’ื™ืฉ ืงืฆืช ืคื—ื•ืช ืจืข ืขื ื”ืฉื˜ื•ื™ื•ืช ืฉืœื ื• - ื•ื”ื™ื•ื ืขื ื’ื™ื˜ื”ืื‘ ืงืœ ืœืงืจื•ื ืืคื™ืœื• ืžื”ื˜ืœืคื•ืŸ. ื‘ื•ืื• ื ื ืกื” ื™ื—ื“ ืœืงืจื•ื ืืช ื”ืงื•ื“ ืฉืœ groupBy ืžืกืคืจื™ื™ืช ื” JavaScript ื”ืคื•ืคื•ืœืจื™ืช lodash ื•ื ืจืื” ืžื” ื ื•ื›ืœ ืœืœืžื•ื“ ืžืžื ื•. ## ื ืงื•ื“ืช ื”ื”ืชื—ืœื” - ื”ืงื•ื‘ืฅ groupBy ื‘ื›ื ื™ืกื” ืœืžืื’ืจ ืฉืœ lodash ืื ื—ื ื• ืฉืžื™ื ืœื‘ ืงื•ื“ื ื›ืœ ืฉื”ืกืคืจื™ื” ืžื—ื•ืœืงืช ืœืงื‘ืฆื™ื ื•ื›ืœ ืคื•ื ืงืฆื™ื” ื ืžืฆืืช ื‘ืงื•ื‘ืฅ ืžืฉืœื”. ื”ืงื•ื‘ืฅ package.json ืžืกืคืจ ืœื ื• ืฉื”ืงื•ื‘ืฅ ื”ืจืืฉื™ ื‘ืกืคืจื™ื” ื ืงืจื lodash.js:
{
  "name": "lodash",
  "version": "5.0.0",
  "license": "MIT",
  "private": true,
  "main": "lodash.js",
  "engines": {
    "node": ">=4.0.0"
  },
  "sideEffects": false,
  "scripts": {
    "style": "eslint *.js .internal/**/*.js",
    "test": "mocha -r esm test/*.test.js",
    "validate": "npm run style && npm run test"
  },
  "devDependencies": {
    "mocha": "^5.2.0",
    "eslint": "^7.16.0",
    "eslint-plugin-import": "^2.22.1",
    "lodash": "4.17.20",
    "esm": "^3.2.25"
  }
}
ืื‘ืœ ื‘ื—ื™ืคื•ืฉ ื‘ืชื™ืงื™ื™ืช ื”ืคืจื•ื™ืงื˜ ืื ื—ื ื• ืžื’ืœื™ื ืฉ lodash.js ืื™ื ื• ื—ืœืง ืžืงื•ื“ ื”ืžืงื•ืจ. ื‘ Readme ืžืกืคืจื™ื ืœื ื• ืฉื›ื“ื™ ืœื‘ื ื•ืช ืืช lodash.js ื ืฆื˜ืจืš ืœื”ืชืงื™ืŸ ืกืคืจื™ื” ืื—ืจืช ืฉื ืงืจืืช lodash-cli. ืื•ืœื™ ื‘ื™ื•ื ืื—ืจ ื™ื”ื™ื” ืžืขื ื™ื™ืŸ ืœื”ื™ื›ื ืก ื•ืœืงืจื•ื ืืช ื”ืงื•ื“ ืฉืœ lodash-cli ื•ืœื”ื‘ื™ืŸ ืื™ืš ื”ื™ื ืžื™ื™ืฆืจืช ืืช ื”ืงื•ื‘ืฅ ื”ืจืืฉื™. ื›ืจื’ืข ืื ื™ ืจื•ืฆื” ืœื”ืชืžืงื“ ื‘ืคื•ื ืงืฆื™ื” groupBy. ืžืื—ืจ ื•ื™ืฉ ื‘ืชื™ืงื™ื” ืงื•ื‘ืฅ ืฉืžืชืื™ื ืœื›ืœ ืคื•ื ืงืฆื™ื” ืฉืœ lodash ืื ื™ ืžื—ืคืฉ ืืช ื”ืงื•ื‘ืฅ ืฉื ืงืจื groupBy.js:
import baseAssignValue from './.internal/baseAssignValue.js'
import reduce from './reduce.js'

/** Used to check objects for own properties. */
const hasOwnProperty = Object.prototype.hasOwnProperty

/**
 * Creates an object composed of keys generated from the results of running
 * each element of `collection` thru `iteratee`. The order of grouped values
 * is determined by the order they occur in `collection`. The corresponding
 * value of each key is an array of elements responsible for generating the
 * key. The iteratee is invoked with one argument: (value).
 *
 * @since 0.1.0
 * @category Collection
 * @param {Array|Object} collection The collection to iterate over.
 * @param {Function} iteratee The iteratee to transform keys.
 * @returns {Object} Returns the composed aggregate object.
 * @example
 *
 * groupBy([6.1, 4.2, 6.3], Math.floor)
 * // => { '4': [4.2], '6': [6.1, 6.3] }
 */
function groupBy(collection, iteratee) {
  return reduce(collection, (result, value, key) => {
    key = iteratee(value)
    if (hasOwnProperty.call(result, key)) {
      result[key].push(value)
    } else {
      baseAssignValue(result, key, [value])
    }
    return result
  }, {})
}

export default groupBy
## ืžื” ืืคืฉืจ ืœืœืžื•ื“ ืžื”ื”ืขืจื•ืช ื”ืงื•ื‘ืฅ ืžื›ื™ืœ ื‘ืกืš ื”ื›ืœ ืฉื ื™ ื‘ืœื•ืงื™ื ืžืจื›ื–ื™ื™ื ืฉืœ ื”ืขืจื•ืช: ื”ื‘ืœื•ืง ื”ื’ื“ื•ืœ ื”ื•ื ื” jsdoc ืฉืžืžื ื• ืžื™ื•ืฆืจ ื“ืฃ ื”ืชื™ืขื•ื“ ืฉืœ ื”ืคื•ื ืงืฆื™ื”. ื—ื•ืฅ ืžืžื ื• ื™ืฉ ืจืง ื”ืขืจื” ื‘ื•ื“ื“ืช ืื—ืช ื›ืืŸ:
/** Used to check objects for own properties. */
const hasOwnProperty = Object.prototype.hasOwnProperty
ืœื‘ื“ ื”ืฉื•ืจื” ื”ื–ืืช ื ืจืื™ืช ืชืžื•ื”ื”- ื”ืจื™ ืื ื—ื ื• ื™ื•ื“ืขื™ื ืžื” Object.prototype.hasOwnProperty ืขื•ืฉื” ื‘ JavaScript. ืื‘ืœ ืื ื ื—ืคืฉ ื‘ืขื•ื“ ืงื‘ืฆื™ื ื‘ืกืคืจื™ื” ื ื’ืœื” ืฉื›ืœ ืคืขื ืฉืžื•ื’ื“ืจ const ื’ืœื•ื‘ืืœื™ ื‘ืงื•ื‘ืฅ ื™ืฉ ืžืขืœื™ื• ื”ืขืจื” ืฉืžืกื‘ื™ืจื” ืžื” ืชืคืงื™ื“ื•. ืœื“ื•ื’ืžื” ื‘ืงื•ื‘ืฅ clone.js ืื ื—ื ื• ืžื•ืฆืื™ื ืืช:
/** Used to compose bitmasks for cloning. */
const CLONE_SYMBOLS_FLAG = 4
ื•ื‘ conforms.js ืื ื™ ืžื•ืฆื ืืช:
/** Used to compose bitmasks for cloning. */
const CLONE_DEEP_FLAG = 1
ื•ื‘ isArrayBuffer.js ื™ืฉ ืœื™ ืืช:
/* Node.js helper references. */
const nodeIsArrayBuffer = nodeTypes && nodeTypes.isArrayBuffer
ื‘ืงื™ืฆื•ืจ ื–ื” ื ืจืื” ื›ืžื• Best Practice ืฉืืžื•ืจ ืœืขื–ื•ืจ ืœื ื• ืœื”ืชืžืฆื ื‘ืงื•ื“. ืื ื™ ืœื ื‘ื˜ื•ื— ื›ืžื” ื”ื•ื ืืคืงื˜ื™ื‘ื™ ืื‘ืœ ืœืคื—ื•ืช ื”ื ืขืงื‘ื™ื™ื. ## ืฉืืœื•ืช ืžืงืจื™ืืช ื”ืžื™ืžื•ืฉ ื ืžืฉื™ืš ืœืžื™ืžื•ืฉ ืขืฆืžื• ื•ื›ืืŸ ื’ื ืื ื™ ืžื•ืฆื ืฉื•ืจื” ืงืฆืช ืžืคืชื™ืขื”:
function groupBy(collection, iteratee) {
  return reduce(collection, (result, value, key) => {
    key = iteratee(value)

ToCode
1 419
# ืฉืืœื•ืช ื‘ืœื™ ืชืฉื•ื‘ื•ืช ื›ืฉืื ื—ื ื• ื ืชืงืœื™ื ื‘ืžื™ื“ืข ื—ื“ืฉ ืื• ืืคื™ืœื• ืขื•ื‘ื“ื™ื ืขืœ ื ื•ืฉืื™ื ืฉืื ื—ื ื• ืžื›ื™ืจื™ื ื”ืžื•ื— ื›ืœ ื”ื–ืžืŸ ืžืขืœื” ืฉืืœื•ืช. ื”ืจืฆื•ืŸ ืœืกืžืŸ ื•ื™ ื•ืฉื ื™ื ืฉืœ ื‘ื™ืช ืกืคืจ ืœื™ืžื“ื• ืื•ืชื ื• ืฉื”ืชืฉื•ื‘ื” ื–ื” ืžื” ืฉื—ืฉื•ื‘. ืฉื”ืฉืืœื•ืช ื”ื™ื—ื™ื“ื•ืช ืฉืžืขื ื™ื™ื ื•ืช ื”ืŸ ืืœื” ืฉื™ืฉ ืœื”ืŸ ืชืฉื•ื‘ื” ื•ืฉืžื” ืฉืฆืจื™ืš ืœืฉืžื•ืจ ื‘ืจืืฉ ืื• "ืœื“ืขืช" ื–ืืช ื”ืชืฉื•ื‘ื”. ื”ืฉืืœื” ื”ื™ื ืจืง ื“ืจืš ืœื•ื•ื“ื ืฉื”ื‘ื ืช, ืจืง ื“ืจืš ืœืจืื•ืช ืฉื‘ืืžืช ืงื™ื‘ืœืช ืืช ื”ืชืฉื•ื‘ื”. ืœื™ืžื•ื“ ืืžื™ืชื™, ื‘ืชื•ืจ ื“ืจืš ื—ื™ื™ื, ื“ื•ืจืฉ ื‘ื“ื™ื•ืง ืืช ื”ื”ื™ืคืš. ืื™ืŸ ื˜ืขื "ืœืืกื•ืฃ" ืชืฉื•ื‘ื•ืช. ื‘ืžืงื•ื ื–ื” ืขื“ื™ืฃ ืœืฉื—ืง ืขื ื”ืฉืืœื•ืช ื•ืœืžืฆื•ื ืขื•ื“ ื“ืจื›ื™ื ืœื”ื’ื™ืข ืœืชืฉื•ื‘ื•ืช. ืžืจื’ืข ืฉืžืฆืืช ืืช ื”ืชืฉื•ื‘ื” ืืคืฉืจ ืœื–ืจื•ืง ืื•ืชื” ื•ืœื”ืžืฉื™ืš ืœืฉืืœื” ื”ื‘ืื”. ื”ื—ื™ื™ื ืžืœืื™ื ื‘ืฉืืœื•ืช ืฉืื™ืŸ ืขืœื™ื”ืŸ ืชืฉื•ื‘ื” ื•ื”ืžืฉื—ืง ืฉืœื ื• ื”ื•ื ืœื‘ื—ื•ืจ ืœืื™ื–ื” ื›ื™ื•ื•ืŸ ืœืœื›ืช ื”ื™ื•ื. ื‘ื’ื™ื–ืจื” ื”ืžืงืฆื•ืขื™ืช - ื›ืฉืžื•ืขืžื“ ื‘ืจืื™ื•ืŸ ืขื‘ื•ื“ื” ืžืจืื” ืืช ืžืกืœื•ืœ ื”ื—ืฉื™ื‘ื” ืฉืœื• ืœืฉืืœื”, ื•ืžืชืงื“ื ืฆืขื“ ืื—ืจื™ ืฆืขื“ ืœืคื™ืชืจื•ืŸ, ื’ื ืื ื‘ืกื•ืฃ ื”ื•ื ืœื ืžื’ื™ืข ืœืชืฉื•ื‘ื” ื–ื” ื”ืจื‘ื” ืคืขืžื™ื ืžืกืคื™ืง ื˜ื•ื‘. ืœืขื•ืžืช ื–ืืช ื›ืฉืžื•ืขืžื“ ื–ื•ืจืง ืืช ื”ืชืฉื•ื‘ื” ื”ื ื›ื•ื ื” ืคืฉื•ื˜ ื›ื™ ื”ื•ื ื”ื›ื™ืจ ืืช ื”ืฉืืœื” ืžืจืืฉ, ื–ื” ืžืœืžื“ ืื•ืชื ื• ื”ืจื‘ื” ืคื—ื•ืช ืขืœ ืื•ืชื• ืžื•ืขืžื“. ื‘ื”ืจื‘ื” ืจืื™ื•ื ื•ืช ืื ื—ื ื• ื“ื•ื•ืงื ืžื—ืคืฉื™ื ืœืฉืื•ืœ ืฉืืœื•ืช ืฉื”ืžื•ืขืžื“ ืœื ืžื›ื™ืจ, ื›ื™ ืžื” ืฉืžืขื ื™ื™ืŸ ืื•ืชื ื• ื–ื” ื”ื—ื™ืคื•ืฉ. ื•ื”ื—ื™ืคื•ืฉ ืœื ื“ื•ืจืฉ ืฉืชื”ื™ื” ืชืฉื•ื‘ื” ื‘ืกื•ืฃ.

ToCode
1 419
# ืœืžื” ืœื ื˜ื™ืคืœื ื• ื‘ื–ื” ื›ืฉื–ื” ื”ืชื—ื™ืœ? ืื™ืš ืœื ื˜ื™ืคืœื ื• ื‘ื–ื” ื›ืฉื–ื” ืจืง ื”ืชื—ื™ืœ? ื ื• ื–ื” ื‘ืจื•ืจ- - ื‘ื”ืชื—ืœื” ื–ื” ืœื ื ืจืื” ื›ื–ื” ื‘ื™ื’ ื“ื™ืœ - ื”ื™ื” ื ื“ืžื” ืฉืชืžื™ื“ ืืคืฉืจ ืœืฉื ื•ืช ื‘ืขืชื™ื“ - ืจืฆื™ื ื• ืœืขืœื•ืช ืœืื•ื•ื™ืจ - ืจืฆื™ื ื• ืœื”ืชืงื“ื ื‘ืคื™ืฆ'ืจื™ื ื™ื•ืชืจ ื—ืฉื•ื‘ื™ื - ื–ื” ืœื ื”ื™ื” ืฉื•ื•ื” ืืช ื”ืžืืžืฅ ื•ืขื›ืฉื™ื•? ืขื›ืฉื™ื• ืžืื•ื—ืจ ืžื“ื™: ื™ืฉ ื›ื‘ืจ ืœืงื•ื—ื•ืช ืฉืžื›ื™ืจื™ื ืืช ื›ืชื•ื‘ืช ื” IP ืฉืœื ื• ื•ืžืกืชืžื›ื™ื ืขืœื™ื”; ื”ื ืชื•ื ื™ื ื‘ DB ื›ื‘ืจ ืฉืžื•ืจื™ื ื‘ืฆื•ืจื” ืžืกื•ื™ืžืช ื•ื™ืฉ ื™ื•ืชืจ ืžื“ื™ ืฉื•ืจื•ืช ื‘ืฉื‘ื™ืœ ืœื”ืชื—ื™ืœ ืœื”ืขืชื™ืง ืœื˜ื‘ืœื” ื—ื“ืฉื”; ื”ืงื•ื“ ื›ื‘ืจ ื”ื•ืขืชืง ื‘ืจื—ื‘ื™ ื”ืžืขืจื›ืช; ื™ืฉ ื™ื•ืชืจ ืžื“ื™ ืคื™ืฆ'ืจื™ื ื•ืœื ื‘ืจื•ืจ ืื™ืคื” ืžืชื—ื™ืœื™ื ืœื›ืชื•ื‘ ื‘ื“ื™ืงื•ืช. ืฉื•ื•ื” ืœื–ื›ื•ืจ ืฉื’ื ื›ืฉื–ื” ืžืจื’ื™ืฉ ืžืื•ื—ืจ ืžื›ื“ื™ ืœืชืงืŸ, ืฉื‘ื•ืข ื”ื‘ื ื™ื”ื™ื” ืืคื™ืœื• ื™ื•ืชืจ ื’ืจื•ืข. ื–ื” ืœื ืžืฉื ื” ืœืžื” ืœื ื˜ื™ืคืœื ื• ื‘ื–ื” ื›ืฉื–ื” ืจืง ื”ืชื—ื™ืœ, ื”ื“ื‘ืจ ื”ื—ืฉื•ื‘ ื”ื•ื ืœืคืชื•ืจ ืืช ื–ื” ืขื›ืฉื™ื•.

ToCode
1 419
# ืžืฉื—ืงื™ื ืขื Deta ืœื, ื–ื• ืœื ืฉื’ื™ืืช ื›ืชื™ื‘ ื‘ื›ื•ืชืจืช - ืื›ืŸ ื™ืฉ ืžืขืจื›ืช ืขื ืŸ ื—ื™ื ืžื™ืช ืœื’ืžืจื™ ื‘ืฉื deta ืฉื›ื•ืœืœืช ื’ื ื‘ืกื™ืก ื ืชื•ื ื™ื ื•ื’ื ืืคืฉืจื•ืช ืœื›ืชื•ื‘ ืงื•ื“ ื•ื•ื‘ ื‘ Python ืื• Node.JS. ื”ืœื›ืชื™ ืœืฉื—ืง ืขื ื” API ืฉืœื”ื ื›ื“ื™ ืœืจืื•ืช ืžื” ืืคืฉืจ ืœืงื‘ืœ ื‘ืœื™ ืœืฉืœื. ## ืžื” ื‘ืงื•ืคืกื” ื”ืกืœื•ื’ืŸ ืื•ืžืจ: > Deta is a free cloud crafted with the developer and user experience at heart. ื•ื–ื” ืกื•ื’-ืฉืœ ื ื›ื•ืŸ. ืœืงื— ืœื™ ืฉืชื™ ื“ืงื•ืช ืœื”ืงื™ื ื—ืฉื‘ื•ืŸ ื•ืขื•ื“ 5 ื“ืงื•ืช ืœืงื‘ืœ ืืชืจ ื•ื•ื‘ ื‘ืื•ื•ื™ืจ. ื‘ืฉื‘ื™ืœ ืœื”ืชื—ื™ืœ ืœืขื‘ื•ื“ ืื ื—ื ื• ืžืชืงื™ื ื™ื ืืช ื” CLI Client ืฉืœื”ื (ื”ื•ืจืื•ืช ื‘ืืชืจ), ืžืคืขื™ืœื™ื ืžืฉื•ืจืช ื”ืคืงื•ื“ื” deta login ื•ืื– ืžืžืœืื™ื ื˜ื•ืคืก ื•ืœื•ื—ืฆื™ื ืขืœ ืงื™ืฉื•ืจ ื‘ืžื™ื™ืœ ืฉื ืฉืœื— ืืœื™ื›ื. ื—ื•ืฅ ืžืœื”ืงื™ื ืžืขืจื›ืช ื•ื•ื‘ ื‘ืคื™ื™ืชื•ืŸ (ืขื ืคืœืืกืง) ื”ื ื’ื ืชื•ืžื›ื™ื ื‘: 1. ื—ื™ื‘ื•ืจ ื“ื•ืžื™ื™ืŸ ืฉืœื›ื ืœืžืขืจื›ืช. 2. ื”ืคืขืœืช ืžืฉื™ืžื•ืช ืžืชื•ื–ืžื ื•ืช ืขื cron. 3. ืื—ืกื•ืŸ ืงื‘ืฆื™ื ืขื ืžืขืจื›ืช ืฉื ืงืจืืช Data Drive (ืขื“ 10 ื’'ื™ื’ื”). 4. ืื—ืกื•ืŸ ื ืชื•ื ื™ื ืขื ืžืขืจื›ืช ืฉื ืงืจืืช Deta Base. ื”ื—ื™ืกืจื•ืŸ ื”ื™ื—ื™ื“ ืฉืžืฆืืชื™ ื”ื•ื ืฉืื™ ืืคืฉืจ ืœืžื—ื•ืง ืคืจื•ื™ืงื˜. ืœื ื”ืฆืœื—ืชื™ ืœื”ื‘ื™ืŸ ืœืžื”. ื•ื’ื ืœื ืžืฆืืชื™ ื”ืชื™ื—ืกื•ืช ืœ Rate Limits ืื• ื“ื‘ืจื™ื ื›ืืœื”. ## ื”ืชื•ื›ื ื™ืช ื”ืจืืฉื•ื ื” ืฉื›ืชื‘ืชื™ ื‘ืฉื‘ื™ืœ ื”ืžืฉื—ืง ื›ืชื‘ืชื™ ืฉื ืชื•ื›ื ื™ืช ืคื™ื™ืชื•ืŸ ืฉืกื•ืคืจืช ื›ืžื” ื‘ืงืฉื•ืช POST ืฉืœื—ืชื ืืœื™ื” ื•ืฉื•ืžืจืช ืืช ื”ืชื•ืฆืื” ื‘ื‘ืกื™ืก ื ืชื•ื ื™ื. ื–ื” ื”ืงื•ื“:
from flask import Flask
from deta import Deta

deta = Deta()
counters = deta.Base('counters')

app = Flask(__name__)

@app.route('/', methods=["GET"])
def get_root():
    record = counters.get('posts') or { "count": 0 }
    return f"{record['count']} POST requests were sent so far"

@app.route('/', methods=["POST"])
def post_root():
    try:
        updates = {
                "count": counters.util.increment(1)
                }
        counters.update(updates, "posts")
        record = counters.get('posts')
        return f"{record['count']} POST requests were sent so far"
    except Exception as err:
        # can only update existing records
        try:
            counters.put({ "key": "posts", "count": 1 })
            record = counters.get('posts')
            return f"{record['count']} POST requests were sent so far (including yours)"
        except Exception as err:
            return f"Error - {err}"

ื”ื—ืœืงื™ื ื”ืžืขื ื™ื™ื ื™ื ืžืžื ื• ืœื“ืขืชื™: 1. ืชืžื™ื›ื” ืžืœืื” ื‘ flask, ื•ื›ื ืจืื” ื‘ืกืคืจื™ื•ืช ืคื™ื™ืชื•ืŸ ื‘ืื•ืคืŸ ื›ืœืœื™ (ืืคืฉืจ ืœื›ืชื•ื‘ ืงื•ื‘ืฅ requirements.txt ื•ื”ื ืžืชืงื™ื ื™ื ื›ืœ ืžื” ืฉื ืžืฆื ื‘ื•) 2. ื‘ืกื™ืก ื”ื ืชื•ื ื™ื Deta Base ืžื‘ื•ืกืก ืจืฉื•ืžื•ืช ื•ืžื–ื›ื™ืจ ื‘ืกื™ืกื™ ื ืชื•ื ื™ื NoSQL, ืื‘ืœ ื‘ื’ื™ืจืกื” ืžืื•ื“ ืžืื•ื“ ืคืฉื•ื˜ื” ืฉืœื”ื ื•ืขื API ืžืกื•ืจื‘ืœ. ื”ืคื•ื ืงืฆื™ื” update ืœื“ื•ื’ืžื” ืœื ืžื—ื–ื™ืจื” ืืช ื”ืขืจืš ื”ืžืขื•ื“ื›ืŸ ืื– ื‘ืฉื‘ื™ืœ ืœืงื‘ืœ ืื•ืชื• ื”ื™ื™ืชื™ ืฆืจื™ืš ืœื”ืคืขื™ืœ ืขื•ื“ ื‘ืงืฉืช get, ืžื” ืฉืœื ื‘ื˜ื•ื— ื™ื—ื–ื™ืจ ืชื•ืฆืื” ื ื›ื•ื ื” (ื•ื™ืฉ ืขื•ื“ ื›ืžื” ื‘ืื’ื™ื ืžื”ืกื•ื’ ื”ื–ื” ื‘ืชื•ื›ื ื™ืช). 3. ืืคืฉืจ ืœื”ืฉืชืžืฉ ืจืง ื‘ื‘ืกื™ืก ื”ื ืชื•ื ื™ื, ืื• ืจืง ื‘ Web Framework, ืื• ืจืง ื‘ืื—ืกื•ืŸ ื”ืงื‘ืฆื™ื, ืื• ื‘ื›ื•ืœื ื™ื—ื“. ืกืš ื”ื›ืœ ืžืงื•ื ืื™ื—ืกื•ืŸ ื‘ื—ื™ื ื ืœืคืจื•ื™ืงื˜ื™ ื•ื•ื‘ ื–ื” ืชืžื™ื“ ืจืขื™ื•ืŸ ื˜ื•ื‘. ื”ื™ื™ืชื™ ืฉืžื— ื™ื•ืชืจ ืื ื”ื ื”ื™ื• ื ื•ืชื ื™ื ืœื™ ืžื›ื•ื ื” ืื• ืงืœืืกื˜ืจ ืงื•ื‘ืจื ื˜ื™ืก, ืื‘ืœ ื›ืฉืœื ืžืฉืœืžื™ื ืื™ ืืคืฉืจ ืœื”ืชืœื•ื ืŸ. ื”ืืชืจ ืžืื•ื“ ืžืชืื™ื ืœืคืจื•ื™ืงื˜ื™ ืฆื“ ืฉืœื›ื ื›ืฉืžื—ืคืฉื™ื ืคืฉื•ื˜ ืœืขืœื•ืช ืœืื•ื•ื™ืจ ืื™ื–ื” API ื‘ืคื™ื™ืชื•ืŸ ืื• Node.JS ื‘ืœื™ ืœื”ืชืขืกืง ืขื ืฉืจืชื™ื.

ToCode
1 419
# ืื™ืš ืœืฉื ื•ืช ื›ืœืœื™ ESLint ื‘ create-react-app ื‘ื›ืชื™ื‘ืช ืงื•ื“ ื‘ื“ื™ืงื” ืชืงื•ืคื” ืืจื•ื›ื” ืฉืื ื™ ืžืขื“ื™ืฃ ืœื”ืฉืชืžืฉ ื‘ืขืจืš ื”ื”ื—ื–ืจ ืฉืœ render ื‘ืžืงื•ื ื‘ screen ื”ื’ืœื•ื‘ืืœื™ ื‘ืขืช ื›ืชื™ื‘ืช ื”ื‘ื“ื™ืงื•ืช, ื›ืœื•ืžืจ ืื ื™ ืžืขื“ื™ืฃ ืืช ื”ื’ื™ืจืกื” ื”ื–ืืช:
import { render } from '@testing-library/react';
import App from './App';

test('renders learn react link', () => {
  const screen = render(<App />);
  const linkElement = screen.getByText(/learn react/i);
  expect(linkElement).not.toBeInTheDocument();
});
ืขืœ ืคื ื™:
import { screen, render } from '@testing-library/react';
import App from './App';

test('renders learn react link', () => {
  render(<App />);
  const linkElement = screen.getByText(/learn react/i);
  expect(linkElement).not.toBeInTheDocument();
});
ื”ืกื™ื‘ื” ื”ื™ื ื”ื”ื‘ื“ืœ ื”ืคื•ื ืงืฆื™ื•ื ืืœื™ ื‘ื™ืŸ ืฉืชื™ ื”ื’ื™ืฉื•ืช. ื‘ื’ื™ืฉื” ื”ืจืืฉื•ื ื” ื›ืœ ื”ืฉืื™ืœืชื•ืช ื™ืชืคืกื• ืจืง ืืœืžื ื˜ื™ื ืžื”ืงื•ืžืคื•ื ื ื˜ื” ืฉ render ืขื›ืฉื™ื• ื”ืฆื™ื’, ื•ื‘ื’ื™ืฉื” ื”ืฉื ื™ื” ื”ืฉืื™ืœืชื•ืช ืžืชื—ื™ืœื•ืช ืž body ื•ืœื›ืŸ ื™ื›ื•ืœื•ืช ืœืชืคื•ืก ื’ื ืืœืžื ื˜ื™ื ืฉื”ื™ื• ืฉื ืงื•ื“ื. ื‘ืชืงื•ืคื” ื”ืื—ืจื•ื ื” ื”ืขื“ืคื” ื–ื• ื ื”ื™ื™ืชื” ืงืฉื” ื™ื•ืชืจ ืœื‘ื™ืฆื•ืข ื‘ื’ืœืœ ืฉ create-react-app ื›ื•ืœืœ ื”ื’ื“ืจื•ืช eslint ืฉืžืžืœื™ืฆื•ืช ื‘ื“ื™ื•ืง ืขืœ ื”ื”ื™ืคืš, ื›ืœื•ืžืจ ืขืœ ื”ื’ื™ืฉื” ื”ืฉื ื™ื”. ื”ื”ืกื‘ืจ ืฉืœื”ื ื›ืืŸ: https://github.com/testing-library/eslint-plugin-testing-library/blob/main/docs/rules/prefer-screen-queries.md ืžื” ืขื•ืฉื™ื? ืžืชืงื ื™ื ืืช ื” eslint ื›ืžื•ื‘ืŸ. ื‘ืชื•ืš ื”ืงื•ื‘ืฅ package.json ืฉืœ ืคืจื•ื™ืงื˜ create-react-app ื—ื“ืฉ ื ื•ื›ืœ ืœืžืฆื•ื ืืช ื”ื‘ืœื•ืง ื”ื‘ื:
  "eslintConfig": {
    "extends": [
      "react-app",
      "react-app/jest"
    ]
  },
ื›ืœ ืžื” ืฉืฆืจื™ืš ืœืขืฉื•ืช ื–ื” ืœื–ื”ื•ืช ืืช ืฉื ื”ื›ืœืœ ืžืชื•ืš ื”ื•ื“ืขืช ื”ืฉื’ื™ืื” ืื• ื“ืฃ ื”ื”ืกื‘ืจ ืขืœ ื”ื›ืœืœ, ื‘ืžืงืจื” ืฉืœื ื• ื”ื›ืœืœื™ื ื”ื‘ืขื™ื™ืชื™ื™ื ื”ื testing-library/prefer-screen-queries ื• testing-library/render-result-naming-convention ื•ืื– ืžื•ืกื™ืคื™ื ื‘ืœื•ืง rules ืœ package.json ืฉืžื ื˜ืจืœ ืืช ืฉื ื™ื”ื:
  "eslintConfig": {
    "extends": [
      "react-app",
      "react-app/jest"
    ],
    "rules": {
      "testing-library/prefer-screen-queries": "off",
      "testing-library/render-result-naming-convention": "off"
    }
  },
ื”ืชื•ืฆืื”? ื•ื•ื‘ืกื˜ื•ืจื ืจื’ื•ืข ื™ื•ืชืจ ื•ืืคืฉืจ ืœื—ื–ื•ืจ ืœืขื‘ื•ื“ ื•ืœื”ืชืžืงื“ ื‘ื‘ืขื™ื•ืช ืืžื™ืชื™ื•ืช ื‘ืงื•ื“. ื .ื‘. ืืคืฉืจ ืœื”ืฉืชืžืฉ ื‘ื˜ืจื™ืง ื”ื–ื” ื›ืœ ืคืขื ืฉืืชื ืœื ืžืกื›ื™ืžื™ื ืขื eslint. ืžื•ืชืจ ืœื—ืฉื•ื‘ ืื—ืจืช.

ToCode
1 419
ื‘ืฆื“ ื”ื—ื‘ืจืชื™ ืชืœืžื™ื“ื™ื ื‘ืขืœื™ ืชื• ื™ืจื•ืง ื™ื•ื›ืœื• ืœื”ืžืฉื™ืš ืœื”ื’ื™ืข ืœื‘ื™ืช ื”ืกืคืจ, ืฉื ื™ื•ื›ืœื• ืœืœืžื•ื“ ื‘ืขืฆืžื ื“ืจืš ื”ืงื™ื˜ื™ื ืœืœื™ืžื•ื“ ืขืฆืžื™ (ื‘ื“ื™ื•ืง ื›ืžื• ืชืœืžื™ื“ ืฉื ืฉืืจ ื‘ื‘ื™ืช) ืื‘ืœ ื’ื ืœื”ืฉืชืชืฃ ื‘ืคืขื™ืœื•ื™ื•ืช ื—ื‘ืจืชื™ื•ืช ืขื ื”ื™ืœื“ื™ื ื”ืื—ืจื™ื ื‘ื›ื™ืชื” ืื• ื‘ืฉื™ื›ื‘ื”. ืœืฆื•ืจืš ืื•ืชืŸ ืคืขื™ืœื•ื™ื•ืช ื ืื—ื“ ืชืœืžื™ื“ื™ื ืžื›ื™ืชื•ืช ืฉื•ื ื•ืช ื•ืžื‘ื ื” ื”ืคืขื™ืœื•ืช ื™ื”ื™ื” ื“ื•ืžื” ื™ื•ืชืจ ืœืคืขื™ืœื•ืช ื‘ืชื ื•ืขืช ื ื•ืขืจ ืžืืฉืจ ื‘ืฉื™ืขื•ืจ ืงืœืืกื™. ื”ืชืœืžื™ื“ื™ื ืฉืื™ืŸ ืœื”ื ืชื• ื™ืจื•ืง ื•ืฉืฆืจื™ื›ื™ื ืœืœืžื•ื“ ืžื”ื‘ื™ืช ื‘ื–ืžืŸ ื”ื‘ื™ื“ื•ื“ ื”ื ืืœื” ืฉืžื”ื•ื•ื™ื ืืช ื”ืืชื’ืจ ื”ื’ื“ื•ืœ ื‘ื™ื•ืชืจ - ื•ืœื›ืŸ ืฆืจื™ื›ื™ื ืืช ืชืฉื•ืžืช ื”ืœื‘ ื”ืžืฉืžืขื•ืชื™ืช ื‘ื™ื•ืชืจ. ื›ื“ืื™ ืœื”ืฉืงื™ืข ื‘ื”ื ืฉืขื” ืื™ืฉื™ืช ื‘ื›ืœ ื™ื•ื ืฉืœ ื–ื•ื ืขื ืžื•ืจื” (ืื—ื“ ืขืœ ืื—ื“) ื‘ืžื”ืœื›ื” ื”ื ื™ืกืคืจื• ืžื” ื”ื ืขืฉื•, ืžื” ื”ืชื•ื›ื ื™ืช ืฉืœื”ื ืœื”ืžืฉืš ื•ืื•ืœื™ ื™ืขื‘ืจื• ื”ื ื—ื™ื” ืื™ืฉื™ืช ืื™ืš ืœืœืžื•ื“ ืžืื•ืชื ืงื™ื˜ื™ื ืœืœื™ืžื•ื“ ืขืฆืžื™. ืื ื™ ืžื“ืžื™ื™ืŸ ื–ื•ื ืฉื‘ื• ื”ืžื•ืจื” ื™ืกืชื›ืœ ืขืœ ื”ืชืœืžื™ื“ ืœื•ืžื“ ื•ื ื•ืชืŸ ื˜ื™ืคื™ื ืœืœื™ืžื•ื“ ื™ืขื™ืœ ื™ื•ืชืจ. ืœืื˜ ืœืื˜ ื•ื›ื›ืœ ืฉืชืœืžื™ื“ื™ื ื™ืชืจื’ืœื• ืœืฉื™ื˜ืช ื”ืขื‘ื•ื“ื” ื”ื–ืืช ืื ื—ื ื• ื ืจืื” ืคื—ื•ืช ื“ืจื™ืฉื” ืœืฉื™ื—ื•ืช ื”ืื™ืฉื™ื•ืช ื•ื’ื ื”ืชืงื“ืžื•ืช ืžื”ื™ืจื” ื™ื•ืชืจ ืฉืœ ืชืœืžื™ื“ื™ื ื‘ืœื™ืžื•ื“ ื“ืจืš ืื•ืชื ืงื™ื˜ื™ื ืœืœื™ืžื•ื“ ืขืฆืžื™. ื—ืœืง ืžืขืจื›ื•ืช ื”ืœื™ืžื•ื“ ื™ื”ื™ื• ื˜ื•ื‘ื•ืช ืžืกืคื™ืง ื‘ืฉื‘ื™ืœ ืฉืชืœืžื™ื“ื™ื ื™ืคื™ืฆื• ืื•ืชื ืœื—ื‘ืจื™ื”ื ื‘ื‘ืชื™ ืกืคืจ ืื—ืจื™ื ื•ืœืื˜ ืœืื˜ ืชื™ื‘ื ื” ืžืขืจื›ืช ื’ืžื™ืฉื” ื•ื™ืฆื™ื‘ื” ื™ื•ืชืจ ืžื–ืืช ืฉื™ืฉ ืœื ื• ื”ื™ื•ื. ื”ืื ืžืฉืจื“ ื”ื—ื™ื ื•ืš ื™ืจื™ื ืืช ื”ื›ืคืคื”? ื”ืื ื”ืžื•ืจื™ื ื™ืกื›ื™ืžื•? ื•ื”ืื ื”ืชืœืžื™ื“ื™ื ื™ืฉืชืคื• ืคืขื•ืœื”? ื”ื”ื™ืžื•ืจ ืฉืœื™ ืœื’ื‘ื™ ื”ืชืœืžื™ื“ื™ื ื—ื™ื•ื‘ื™, ืœื’ื‘ื™ ืžืฉืจื“ ื”ื—ื™ื ื•ืš ื•ื”ืžื•ืจื™ื - ื ืฉืืจ ืจืง ืœืงื•ื•ืช.

ToCode
1 419
# ืœืžื” ืœืžื™ื“ื” ื”ื™ื‘ืจื™ื“ื™ืช ืœื ืขื•ื‘ื“ืช ื•ืžื” ืืคืฉืจ ืœืขืฉื•ืช ื‘ืžืงื•ื ื”ืฉื‘ื•ืข ื”ื•ื“ื™ืขื• ื’ื ืจืŸ ืืจื– ื•ื’ื ื™ืคื” ื‘ืŸ ื“ื•ื™ื“ ืขืœ ื”ืชื ื’ื“ื•ืช ืœืžื•ื“ืœ "ื”ืœืžื™ื“ื” ื”ื”ื™ื‘ืจื™ื“ื™ืช" ื”ื ื•ื›ื—ื™. ืื ื™ ื›ื•ืชื‘ ืœืžื™ื“ื” ื”ื™ื‘ืจื™ื“ื™ืช ื‘ืžืจื›ืื•ืช ื›ื™ ืœืžื™ื“ื” ื”ื™ื‘ืจื™ื“ื™ืช ืืžื™ืชื™ืช ื”ื™ื ื‘ื”ื—ืœื˜ ื—ื™ื•ื‘ื™ืช, ื•ื”ื™ื ืœื ืžื” ืฉืงื•ืจื” ืขื›ืฉื™ื• ื‘ื‘ืชื™ ื”ืกืคืจ. ื‘ื•ืื• ื ืคืชื— ืืช ื–ื” ื›ื“ื™ ืœื”ื‘ื™ืŸ ืžื” ืงื•ืจื” ืขื›ืฉื™ื• ื‘ื‘ืชื™ ื”ืกืคืจ, ืœืžื” ื–ื” ืœื ืขื•ื‘ื“ ื•ืžื” ืืคืฉืจ ืœืขืฉื•ืช ื‘ืžืงื•ื. ## ืžื” ื–ื” ืœืžื™ื“ื” ื”ื™ื‘ืจื™ื“ื™ืช ืœืžื™ื“ื” ื”ื™ื‘ืจื™ื“ื™ืช, ืื• ื‘ืฉืžื” ื”ืžืงื•ื‘ืœ ื™ื•ืชืจ ืœืžื™ื“ื” ืžืขื•ืจื‘ืช (Blended Learning) ืžื•ื’ื“ืจืช ื‘ื•ื™ืงื™ืคื“ื™ื” ื‘ืชื•ืจ "ืฉื™ื˜ืช ืœื™ืžื•ื“ ื”ืžืฉืœื‘ืช ื”ื•ืจืื” ืžืกื•ืจืชื™ืช, ื›ืœื•ืžืจ ืœืžื™ื“ื” "ืคื ื™ื-ืžื•ืœ-ืคื ื™ื", ืขื ืœืžื™ื“ื” ืžืงื•ื•ื ืช ื•-E-learning, ื‘ื’ื™ืฉื” ื–ื• ื™ืฉ ืืœืžื ื˜ื™ื ื‘ื”ื ื”ืชืœืžื™ื“ ืฉื•ืœื˜ ืขืœ ื–ืžืŸ, ืงืฆื‘, ืžืงื•ื ื•ื ืชื™ื‘ ื”ืœื™ืžื•ื“, ื‘ืฉื™ืœื•ื‘ ืœื™ืžื•ื“ ืคืจื•ื ื˜ืœื™ ื‘ื›ื™ืชื”". ืžื ื™ืกื™ื•ืŸ ื‘ื”ื“ืจื›ืช ืœื ืžืขื˜ ืงื•ืจืกื™ื ื‘ืฉื™ื˜ื” ื–ื•, ืœืžื™ื“ื” ื”ื™ื‘ืจื™ื“ื™ืช ื“ื•ืจืฉืช ืื—ืจื™ื•ืช ื’ื“ื•ืœื” ืžืฆื“ ื”ืชืœืžื™ื“ื™ื ืื‘ืœ ืืœื” ืฉืžืฆืœื™ื—ื™ื ืœื”ืชืžื™ื“ ืžื’ื™ืขื™ื ืœื”ื™ืฉื’ื™ื ื˜ื•ื‘ื™ื ื‘ื”ืจื‘ื” ืžื›ืœ ืฉื™ื˜ืช ืœื™ืžื•ื“ ืื—ืจืช ืฉื ื™ืกื™ืชื™. ื”ื™ื›ื•ืœืช ืฉืœ ืชืœืžื™ื“ื™ื ืœืงื‘ื•ืข ืืช ื”ืงืฆื‘, ื”ื™ื›ื•ืœืช ืœื”ืชื™ื™ืขืฅ ื‘ืžื•ืจื” ื›ืœ ื”ื–ืžืŸ, ื‘ืฉื™ืœื•ื‘ ืขื ื”ืžืกื’ืจืช ื”ื—ื‘ืจืชื™ืช ืฉืœ ืœืžื™ื“ื” ื‘ื›ื™ืชื” ืžืืคืฉืจืช ืœื›ืœ ืชืœืžื™ื“ ืœืงื‘ืœ ืืช ื”ืžืงืกื™ืžื•ื ืฉื ื›ื•ืŸ ืขื‘ื•ืจื• ืžื”ืงื•ืจืก. ื‘ืœืžื™ื“ื” ืžืขื•ืจื‘ืช ื›ืœ ื”ืชืœืžื™ื“ื™ื ืขื•ื‘ืจื™ื ืืช ืื•ืชื• ืžืกืœื•ืœ ืžื‘ื—ื™ื ืช "ืฉื™ื˜ืช ื”ืœื™ืžื•ื“", ืื‘ืœ ื”ืกื™ืœื‘ื•ืก ืฉื›ืœ ืื—ื“ ื™ื’ื™ืข ืœืœืžื•ื“ ื™ื”ื™ื” ืฉื•ื ื” ื•ื™ืชืื™ื ืœื• ืื™ืฉื™ืช. ื–ื” ืื™ื ื• ื”ืžืชื•ื•ื” ืฉืžืชืจื—ืฉ ื”ื™ื•ื ื‘ื›ื™ืชื•ืช ืจื‘ื•ืช ื‘ืืจืฅ. ื‘ื›ื™ืชื•ืช ื‘ื”ืŸ ื™ืฉ ืžืื•ืžืชื™ื ืœืงื•ืจื•ื ื”, ืชืœืžื™ื“ื™ื ื‘ืขืœื™ ืชื• ื™ืจื•ืง ืžืžืฉื™ื›ื™ื ืœื”ื’ื™ืข ืœื›ื™ืชื” ื•ื‘ืžืงื‘ื™ืœ ื”ืชืœืžื™ื“ื™ื ื”ืื—ืจื™ื ืฆื•ืคื™ื ื‘ืฉื™ืขื•ืจ ื“ืจืš ื”ื–ื•ื ื‘ื‘ื™ืช. ื”ืžื•ืจื” ืฆืจื™ืš ืœืœืžื“ ืืช ืฉืชื™ ืงื‘ื•ืฆื•ืช ื”ืชืœืžื™ื“ื™ื ื‘ืžืงื‘ื™ืœ, ืœืžืจื•ืช ืฉืœื›ืœ ืงื‘ื•ืฆื” ื“ืจืš ืชืงืฉื•ืจืช ืฉื•ื ื” ื•ืฆืจื›ื™ื ืฉื•ื ื™ื. ## ืœืžื” ื–ื” ืœื ืขื•ื‘ื“ ื”ื“ืจื›ื” ืคืจื•ื ื˜ืœื™ืช, ืฉืื ื—ื ื• ืžื“ื‘ืจื™ื ืขืœื™ื” ื›ืื™ืœื• ื”ื™ื ื“ื‘ืจ ื˜ื‘ืขื™, ืœื ื‘ืื” ื‘ืงืœื•ืช ืœืจื•ื‘ ื”ืžื•ืจื™ื. ื–ื” ืžืฉื”ื• ืฉืื ื—ื ื• ืฆืจื™ื›ื™ื ืœื”ืชืืžืŸ ืขืœื™ื• ื•ื”ื™ื™ื ื• ืฆืจื™ื›ื™ื ืœืœืžื•ื“ ืื™ืš ืœืขืฉื•ืช ืื•ืชื• ื˜ื•ื‘. ื”ื“ืจื›ื” ืคืจื•ื ื˜ืœื™ืช ืžื•ืจื›ื‘ืช ืžืฉืœื™ื—ืช ืžืกืจื™ื ืจืœื•ื•ื ื˜ื™ื ืœืงื‘ื•ืฆื” ืฉืœ ืื ืฉื™ื ืฉื™ื•ืฉื‘ื™ื ืžื•ืœืš, ืกื™ื ื›ืจื•ืŸ ืžืชืžื™ื“ ื•ื”ืชืืžืช ื”ืงืฆื‘ ืื• ืžืฉื™ื›ืช ืชืœืžื™ื“ื™ื ื—ื–ืจื” ืœืงืฆื‘ ื›ืฉื”ื ื”ื•ืœื›ื™ื ืœืื™ื‘ื•ื“. ื‘ืฉื™ืขื•ืจ ื˜ื•ื‘ ื”ื›ืœ ืžืชื•ื›ื ืŸ ื•ื‘ืื•ืชื• ื–ืžืŸ ื›ืœื•ื ืœื ื™ื“ื•ืข ืžืจืืฉ. ืื ื™ ื™ื›ื•ืœ ืœื”ื’ื™ืข ืœืœืžื“ ืืช ืื•ืชื• ื ื•ืฉื ืœืงื‘ื•ืฆื•ืช ืฉื•ื ื•ืช, ื•ื‘ื›ืœ ืงื‘ื•ืฆื” ื–ื” ื™ืจืื” ืื—ืจืช. ื”ื“ืจื›ื” ืคืจื•ื ื˜ืœื™ืช ื”ื™ื ื›ื•ืœื” ื”ืชืืžื” ืฉืœ ื”ื ื•ืฉื ืœืงื‘ื•ืฆื” ืื™ืชื” ืืชื” ืžื“ื‘ืจ. ื‘ื”ื“ืจื›ื” ื‘ื–ื•ื ื”ืงืฉืจ ื”ื•ื ืžืฉืžืขื•ืชื™ืช ืคื—ื•ืช ื—ื–ืง. ืจื•ื‘ ื”ืžืฉืชืชืคื™ื ื™ืขืฉื• ืขื•ื“ ืคืขื•ืœื•ืช ืชื•ืš ื›ื“ื™ ื”ืฆืคื™ื” ื‘ื–ื•ื ื•ื™ืชืงืฉื• ืœืฉืžื•ืจ ืขืœ ืจื™ื›ื•ื– ืœืื•ืจืš ื›ืœ ื”ื”ืจืฆืื”. ืื™ืŸ ืฉื•ื ื“ืจืš ืœื”ืกืชื›ืœ ืขืœ ื”ืงื‘ื•ืฆื” ื›ื•ืœื” ื•ืœื–ื”ื•ืช ืžื™ ืืชืš ื•ืžื™ ืœื. ืžื•ืจื™ื ืžืชืžื•ื“ื“ื™ื ืขื ื–ื” ื‘ืื—ืช ืžืฉืชื™ ื“ืจื›ื™ื: ืื• ืขืœ ื™ื“ื™ ื”ืขื‘ืจืช ื”ืจืฆืื” ื‘ืกื’ื ื•ืŸ ืกืจื˜, ืฉื›ืžืขื˜ ื”ื›ืœ ืžื•ืงืœื˜ ื•ืžืชื•ื›ื ืŸ ืžืจืืฉ (ืื ื™ ืขื•ืฉื” ืืช ื–ื” ื‘ื•ื•ื‘ื™ื ืจื™ื ื›ืืŸ ื‘ืืชืจ); ืื• ืขืœ ื™ื“ื™ ื™ืฆื™ืจืช ื—ื•ื•ื™ื” ืกื•ืคืจ ืื™ื ื˜ืจืงื˜ื™ื‘ื™ืช ืขื ืกืงืจื™ื, ืžืฉื—ืงื™ ืงื‘ื•ืฆื” ื•ืขื•ื“ ืคืขื™ืœื•ื™ื•ืช ื—ื‘ืจืชื™ื•ืช. ื”ื ื™ืกื™ื•ืŸ ืœืฉืœื‘ ื‘ื™ืŸ ืฉืชื™ ืฉื™ื˜ื•ืช ื”ื”ื“ืจื›ื” ื‘ืื•ืชื• ืฉื™ืขื•ืจ ืื•ืžืจ ืฉื—ื™ื™ื‘ื™ื ืœื‘ื—ื•ืจ: ืื• ืฉืื ื—ื ื• ืžืขื‘ื™ืจื™ื ืฉื™ืขื•ืจ ื‘ื–ื•ื ื•ืžืฉืชืคื™ื ืืช ืžื™ ืฉื ืžืฆื ื‘ื›ื™ืชื”, ืื• ืฉืื ื—ื ื• ืžืขื‘ื™ืจื™ื ืฉื™ืขื•ืจ ืคืจื•ื ื˜ืœื™ ื•ืžืฉื“ืจื™ื ืื•ืชื• ืœื–ื•ื. ืฉืชื™ ื”ืฉื™ื˜ื•ืช ื™ื™ื›ืฉืœื•. ืื ืื ื™ ื‘ื•ื—ืจ ืœื”ืขื‘ื™ืจ ืฉื™ืขื•ืจ ื‘ื–ื•ื ื•ืžื ืกื” ืœื”ืกืชื ื›ืจืŸ ืขื ื”ืงื”ืœ ืฉืœื™ ืฉื ืžืฆื ื‘ื–ื•ื ืื– ืื ื™ ืฆืจื™ืš ืœื–ื›ื•ืจ ืฉื”ื ืขื•ืฉื™ื ืขื•ื“ ื“ื‘ืจื™ื ื‘ืื•ืชื• ื–ืžืŸ, ื•ืœื›ืŸ ืื™ืŸ ืœื™ ื‘ืืžืช ืงืฆื‘ ืฉื™ื—ื” ืื—ื™ื“ ืœื›ื•ืœื. ื”ืื ืฉื™ื ื‘ื›ื™ืชื” ื™ืฉืชืขืžืžื• ื›ื™ ื”ื ื”ื™ื—ื™ื“ื™ื ืฉืจืง ืžืงืฉื™ื‘ื™ื ืœื”ืจืฆืื” (ื›ืœ ื”ืื—ืจื™ื ื’ื ืžืงืฉืงืฉื™ื ื‘ื˜ืœืคื•ืŸ ื‘ืื•ืชื• ื–ืžืŸ). ืื ืื ื™ ื‘ื•ื—ืจ ืฉื™ืขื•ืจ ืœื›ื™ืชื” ื•ืคืฉื•ื˜ ืžืฉื“ืจ ืื•ืชื• ืœื–ื•ื, ืื– ืื•ืชื ืื ืฉื™ื ืฉืžืกืชื›ืœื™ื ืžืจื—ื•ืง ืžื”ืจ ืžืื•ื“ ื™ืœื›ื• ืœืื™ื‘ื•ื“, ื›ื™ ืื ื™ ืœื ืžื—ื›ื” ืœื”ื, ื•ื”ื ืœื ืžืฆืœื™ื—ื™ื ืœืฉืžื•ืจ ืขืœ ืื•ืชื” ืจืžืช ืจื™ื›ื•ื– ื›ืžื• ื”ืžืฉืชืชืคื™ื ืฉื ืžืฆืื™ื ื‘ื›ื™ืชื”. ื”ื ื™ื•ื›ืœื• ืœืจืื•ืช ืืช ื”ืฉื™ืขื•ืจ ื›ืžื• ืฉืจื•ืื™ื ืกืจื˜, ืื‘ืœ ื”ืจืฆืื•ืช ืคืจื•ื ื˜ืœื™ื•ืช ื‘ื“ืจืš ื›ืœืœ ืœื ืžืกืคื™ืง ืžื“ื•ื™ืงื•ืช ื•ื—ืกืจื” ืœื”ืŸ ื”ืขืจื™ื›ื” ืฉื™ืฉ ื‘ืกืจื˜ื™ื ืžื•ืงืœื˜ื™ื, ื›ืš ืฉื”ืŸ ื’ื ืœื ื›ืœ ื›ืš ืžื”ื ื•ืช ืœืฆืคื™ื” ืื ืืชื” ืœื ืฉื. ื•ื›ืœ ื–ื” ืœืคื ื™ ืฉื“ื™ื‘ืจื ื• ืขืœ ืชืงืœื•ืช ื˜ื›ื ื™ื•ืช, ืžื™ืฉื”ื• ืฉื—ื•ื–ืจ ืœื–ื•ื ืื—ืจื™ ืฉื”ืชื ืชืง ืœื• ื”ืžื—ืฉื‘, lag-ื™ื ืœืžื™ื ื™ื”ื ื•ื›ืœ ื”ืฆืจื•ืช ืฉืžื•ืฆื™ืื•ืช ืื•ืชื ื• ืžืจื™ื›ื•ื–, ื•ืื™ืš ื–ื” ืžืฉืคื™ืข ืขืœ ื”ืžืฉืชืชืคื™ื ืฉื ืžืฆืื™ื ื‘ื›ื™ืชื”. ## ืžื” ืืคืฉืจ ืœืขืฉื•ืช ื‘ืžืงื•ื ื”ืคื™ืชืจื•ืŸ ืœื‘ืขื™ื™ืช ื”ืœื™ืžื•ื“ื™ื ื‘ืงื•ื‘ื™ื“ ื”ื•ื ืคืฉื•ื˜ ื›ืžื• ืฉื”ื•ื ืงืฉื” ืœื™ื™ืฉื•ื. ื”ืžืคืชื— ื”ื•ื ื”ื”ื‘ื ื” ืฉืœ ื”ืชืคืงื™ื“ ื”ื›ืคื•ืœ ืฉืœ ื‘ืชื™ ื”ืกืคืจ ื”ื™ื•ื: ื’ื ื‘ืชื•ืจ ืžืงื•ื ืฉืžืงื ื” ื™ื“ืข, ื•ื’ื ื‘ืชื•ืจ ืžืงื•ื ืžืคื’ืฉ ื•ืžืจื›ื– ื”ื—ื™ื™ื ื”ื—ื‘ืจืชื™ื™ื ืฉืœ ื”ืชืœืžื™ื“ื™ื ืฉืœื•ืžื“ื™ื ื‘ื”ื. ืขืœื™ื ื• ืœื”ืคืจื™ื“ ื‘ื™ืŸ ืฉื ื™ ื”ืชืคืงื™ื“ื™ื ื•ืœื™ื™ืฆืจ ืคื™ืชืจื•ืŸ ืฉื•ื ื” ืœื›ืœ ืื—ื“. ื‘ืฆื“ ื”ืœื™ืžื•ื“ื™ ืื™ืŸ ืฉื•ื ื”ื’ื™ื•ืŸ ื‘ืœื™ืžื•ื“ ืคืจื•ื ื˜ืœื™ ืžืขื•ืจื‘ ื‘ื–ื•ื. ื‘ื”ื ื—ื” ืฉืชืœืžื™ื“ื™ื ืžืกื•ื™ืžื™ื ื™ืฆื˜ืจื›ื• ืœืœืžื•ื“ ืžืจื—ื•ืง, ืขื“ื™ืฃ ืœื™ื™ืฆืจ ืงื™ื˜ื™ื ืœืœื™ืžื•ื“ ืขืฆืžื™ ืฉืœ ื”ื ื•ืฉืื™ื ื”ืฉื•ื ื™ื ื•ืœืคืชื•ื— ืœืชืœืžื™ื“ื™ื ื—ื“ืจ ื–ื•ื ืฉื™ืคืขืœ ื›ืœ ื”ื™ื•ื ื‘ืจืฆืฃ ืืœื™ื• ื™ื•ื›ืœื• ืœื”ื™ื›ื ืก ืขื ืฉืืœื•ืช ืขืœ ื ื•ืฉืื™ ื”ืœื™ืžื•ื“. ื‘ื›ืœ ื—ื“ืจ ื™ื”ื™ื” ืžืชืจื’ืœ ืžื•ืžื—ื” ื‘ืžืงืฆื•ืข ืฉื™ื•ื›ืœ ืœืขื ื•ืช ืชืฉื•ื‘ื•ืช ืžืงืฆื•ืขื™ื•ืช ืœืชืœืžื™ื“ื™ื.

ToCode
1 419
# ื–ื” ืœื ื—ืฉื•ื‘ ืื ืืช ืจื•ืฆื” ืœืคืชื•ื— ื‘ืœื•ื’, ื–ื” ืœื ื—ืฉื•ื‘ ื‘ืื™ื–ื• ืคืœื˜ืคื•ืจืžื” ืชื‘ื—ืจื™ ืื• ืื ืชื›ืชื‘ื™ ืœืขืฆืžืš. ืžื” ืฉื—ืฉื•ื‘ ื–ื” ืœื›ืชื•ื‘ ืคื•ืกื˜ื™ื. ืื ืืช ืจื•ืฆื” ืœื‘ื ื•ืช ืžืขืจื›ืช, ืœืขืฆื‘ ืืช ื”ื“ืคื™ื ื•ืœื›ืชื•ื‘ ืืช ื›ืœ ื” CSS ื‘ืฉื‘ื™ืœื ื–ื” ืœื ื—ืฉื•ื‘. ืžืกืคื™ืง ืฉื”ืื™ืคื™ื•ืŸ ื™ื”ื™ื” ื˜ื•ื‘ ื•ื”ืคื•ื ืงืฆื™ื•ื ืืœื™ื•ืช ืชื”ื™ื” ื‘ืžืงื•ื. ื•ืื•ืชื• ื“ื‘ืจ ืœื’ื‘ื™ ื”ื‘ื—ื™ืจื” ื‘ื™ืŸ Redux ืœ MobX, ื‘ื™ืŸ ืจื™ืืงื˜ ืœ Vue, ื‘ื™ืŸ GraphQL ืœ REST. ื•ื‘ื›ืœ ื–ืืช ื ื“ืžื” ืฉื”ืื•ืฉืจ ื”ื›ื™ ื’ื“ื•ืœ ืฉืœื ื• ื”ื•ื ืœื”ื™ืชืงืข ืขืœ ืื•ืชืŸ ืคื™ื ื•ืช ืœื ื—ืฉื•ื‘ื•ืช ื”ืจื‘ื” ื™ื•ืชืจ ืžื“ื™ ื–ืžืŸ ื‘ืชื•ืจ ืฆื•ืจื” ืฉืœ ื”ืกื—ืช ื“ืขืช. ื›ืื™ืœื• ื”ืœื‘ ืจื•ืฆื” ืœืขืฉื•ืช ื”ื›ืœ ื—ื•ืฅ ืžืœื”ืชืงื“ื. ื˜ืจื™ืง ืฉืขื•ื‘ื“ ืœื™ ื‘ืžืงืจื™ื ื›ืืœื” ื”ื•ื "ืœื”ืฉืื™ืจ ืœืื—ืจ ื›ืš" ืืช ื”ื”ืชืœื‘ื˜ื•ืช. ืืช ื” CSS ืืคืฉืจ ืœื”ืฉืื™ืจ ืจื™ืง, ื‘ืžืงื•ื ืจื™ื“ืืงืก ืื• ืžื•ื‘ืืงืก ืคืฉื•ื˜ ืœื›ืชื•ื‘ ืืช ื›ืœ ื”ืกื˜ื™ื™ื˜ ื‘ืงื•ืžืคื•ื ื ื˜ื” ืื• ืžืงืกื™ืžื•ื ื‘ืงื•ื ื˜ืงืกื˜. ื‘ืžืงืจื™ื ืฉื—ื™ื™ื‘ื™ื ืœื‘ื—ื•ืจ ื›ืžื• ื‘ืฆื“ ื”ืฉืจืช ืื ื™ ื‘ื•ื—ืจ ื‘ืžื” ืฉืื ื™ ื›ื‘ืจ ืžื›ื™ืจ ื™ื•ืชืจ ื˜ื•ื‘. ื•ืืช ื”ื‘ืœื•ื’ ื”ืจืืฉื•ืŸ ืฉืœื™ ืคืชื—ืชื™ ื‘ืคืœื˜ืคื•ืจืžื” ืžื ื•ื”ืœืช ืฉื ืงืจืืช blogger. ื”ืžื˜ืจื” ื”ื™ื—ื™ื“ื” ื”ื™ื ืœื”ื’ื™ืข ืœืžืฉื”ื• ื‘ืื•ื•ื™ืจ. ืื—ืจื™ ื–ื” ืžืฉืคืจื™ื.

ToCode
1 419
# ืจืง ื‘ื’ืœืœ ืฉื‘ื ื™ืช ืคืจื•ื™ืงื˜ ื”ืจื‘ื” ื™ื•ืชืจ ืงืœ ืœืœืžื•ื“ ืžืฉื”ื• ื—ื“ืฉ ื›ืฉื™ืฉ ืœื›ื ืกื™ื‘ื” ืœืœืžื•ื“, ื•ืกื™ื‘ื” ืžืื•ื“ ื˜ื•ื‘ื” ืœืœืžื•ื“ ื”ื™ื ื›ื“ื™ ืœื›ืชื•ื‘ ืคืจื•ื™ืงื˜. ืืช ื”ืืชืจ ื”ื–ื” ืœื“ื•ื’ืžื” ื›ืชื‘ืชื™ ื‘ Rails ื‘ื’ืœืœ ืฉื‘ืื•ืชื• ืจื’ืข ืฉื”ื™ื™ืชื™ ืฆืจื™ืš ืžืงื•ื ืœืคืจืกื ืืช ื”ืงื•ืจืก ืฉืœื™ ื’ื ืจืฆื™ืชื™ ืœืœืžื•ื“ ืจื™ื™ืœืก, ื•ื”ื™ื™ืชื™ ืฆืจื™ืš ืคืจื•ื™ืงื˜ ืฉืืคืฉืจ ืœื‘ื ื•ืช ื‘ื˜ื›ื ื•ืœื•ื’ื™ื”. ืื‘ืœ ืขื ื›ืœ ื”ืื”ื‘ื” ืœืฉื™ื˜ืช ื”ืœื™ืžื•ื“ ื”ื–ืืช ืฆืจื™ืš ืœื–ื›ื•ืจ ืืช ื”ืืฉืœื™ื” ืฉื”ื™ื ืžื™ื™ืฆืจืช - ืจืง ื‘ื’ืœืœ ืฉื‘ื ื™ืช ืคืจื•ื™ืงื˜ ืœื ืื•ืžืจ ื™ื•ืชืจ ืžื“ื™ ืขืœ ืจืžืช ื”ืžื™ื•ืžื ื•ืช ืฉืœืš ื‘ื˜ื›ื ื•ืœื•ื’ื™ื”. ืœื™ืžื•ื“ ื˜ื›ื ื•ืœื•ื’ื™ื” ื”ื•ื ืชืžื™ื“ ืงืฉื”, ื•ืื ืฆืจื™ืš ืœืฉืœื‘ ืื•ืชื• ืขื ืคื™ืชื•ื— ื–ื” ืจืง ืžืื˜ ืืช ื”ืงืฆื‘. ืงื•ื“ื ื›ืœ ื›ื™ ื‘ืžืงื•ื ืœืงืจื•ื ืืช ื›ืœ ื”ืชื™ืขื•ื“ ืœืขื•ืžืง ื•ืœื ืกื•ืช ื›ืœ ืคื™ืฆ'ืจ, ืื ื—ื ื• ืžื ืกื™ื ืจืง ืืช ื”ืคื™ืฆ'ืจื™ื ื”ื“ืจื•ืฉื™ื ืœืคืจื•ื™ืงื˜ ืฉืœื ื•. ื•ื’ื ื›ื™ ื‘ืžืงื•ื ืœืคืชื•ืจ ืืช ืื•ืชื” ื‘ืขื™ื” ื‘ืžืกืคืจ ื“ืจื›ื™ื ืฉื•ื ื•ืช ื›ื“ื™ ืœืœืžื•ื“ ืขืœ ืฉื™ื˜ื•ืช ืขื‘ื•ื“ื” ืฉื•ื ื•ืช ืฉื”ื˜ื›ื ื•ืœื•ื’ื™ื” ืžืฆื™ืขื”, ืื ื—ื ื• ืขื•ืฆืจื™ื ื‘ืคื™ืชืจื•ืŸ ื”ืจืืฉื•ืŸ ื•ืžืžืฉื™ื›ื™ื ืœื‘ืขื™ื” ื”ื‘ืื”, ื›ื™ ืฆืจื™ืš ืœื”ืชืงื“ื ืœืคื™ืฆ'ืจ ื”ื‘ื. ื”ืืฉืœื™ื” ื ื•ืฆืจืช ื‘ื’ืœืœ ืฉืจื•ื‘ ื”ืืชื’ืจื™ื ืฉื ืชืžื•ื“ื“ ืื™ืชื ื‘ืขืช ื‘ื ื™ื™ืช ืคืจื•ื™ืงื˜ ืœื ืงืฉื•ืจื™ื ืœืœื™ืžื•ื“ ืžืขืžื™ืง ืฉืœ ื”ื˜ื›ื ื•ืœื•ื’ื™ื”. ืื‘ืœ ื›ืฉืื ื—ื ื• "ืžืฆืœื™ื—ื™ื" ืœื‘ื ื•ืช ืคืจื•ื™ืงื˜ ื‘ื˜ื›ื ื•ืœื•ื’ื™ื” ืฉืจืฆื™ื ื• ืื ื—ื ื• ื˜ื•ืขื™ื ืœื—ืฉื•ื‘ ืฉื–ื” ื›ืœ ืžื” ืฉื™ืฉ ื‘ื” ืื• ืฉื›ื›ื” ื“ื‘ืจื™ื ืขื•ื‘ื“ื™ื. ื›ืŸ, ืœื›ื• ืœื‘ื ื•ืช ืคืจื•ื™ืงื˜. ื›ืŸ, ื”ืฉืชืžืฉื• ื‘ื˜ื›ื ื•ืœื•ื’ื™ื•ืช ื—ื“ืฉื•ืช ื•ื ืฆืœื• ืืช ื”ืคืœื˜ืคื•ืจืžื” ื›ื“ื™ ืœื”ื™ื—ืฉืฃ ืœื˜ื›ื ื•ืœื•ื’ื™ื•ืช ืืœื”. ื•ืื—ืจื™ ืฉืขืฉื™ืชื ืืช ื–ื” ืฉื‘ื• ืœืœืžื•ื“ ืืช ื”ื˜ื›ื ื•ืœื•ื’ื™ื” ืœืขื•ืžืง - ื•ืื ื”ืคืจื•ื™ืงื˜ ื—ืฉื•ื‘ ืชืชื—ื™ืœื• ืœืชืงืŸ ื•ืœืฉืคืจ ืืช ืžื” ืฉื›ืชื‘ืชื. ืจืง ื‘ืฉืœื‘ ื”ืฉื™ืคื•ืจื™ื ืื ื—ื ื• ืžืชื—ื™ืœื™ื ืœื”ื™ื—ืฉืฃ ืœืขื•ืžืง ืฉืœ ืื•ืชื” ื˜ื›ื ื•ืœื•ื’ื™ื”.

ToCode
1 419
# ืขืจื™ื›ื” ืื—ืช ื”ืกื™ื‘ื•ืช ืฉืจื™ืคืงื˜ื•ืจื™ื ื’ ืžืจื’ื™ืฉ ื›ืžื• ื‘ื–ื‘ื•ื– ื–ืžืŸ ื”ื™ื ืฉืื ื—ื ื• ืœื ืžื•ืกื™ืคื™ื ืฉื•ื ื“ื‘ืจ ื—ื“ืฉ ืœืžืขืจื›ืช - ืžื‘ื—ื™ื ืช ื”ืžืฉืชืžืฉื™ื, ืžื‘ื—ื™ื ืช ืžื ื”ืœื™ ื”ืžื•ืฆืจ, ืžื‘ื—ื™ื ืช ื‘ื•ื“ืงื™ ื”ืชื•ื›ื ื” - ื›ื•ืœื ืจื•ืื™ื ื‘ื“ื™ื•ืง ืืช ืื•ืชื• ื”ื“ื‘ืจ. ืื‘ืœ ื–ื• ืืฉืœื™ื”. ืจื™ืคืงื˜ื•ืจื™ื ื’ ื˜ื•ื‘ ื”ื•ื ื›ื–ื” ืฉืคื•ืชื— ืกืชื™ืžื•ืช. ื”ื•ื ืžืืคืฉืจ ื“ืจื›ื™ื ื—ื“ืฉื•ืช ืœื”ืกืชื›ืœ ืขืœ ื”ืงื•ื“ ื•ื”ื•ืคืš ืืช ื›ืชื™ื‘ืช ื”ืคื™ืฆ'ืจ ื”ื‘ื ืœื™ื•ืชืจ ืงืœื” ื•ื™ื•ืชืจ ื›ื™ืคื™ืช. ืื ืงืจื” ืœื›ื ืฉื”ืกืชื›ืœืชื ืขืœ ืงื•ื“ ื—ืฆื™ ืฉืขื” ื•ืคืฉื•ื˜ ืœื ื”ืชื—ืฉืง ืœื›ื ืœื›ืชื•ื‘ ืืช ื”ืฉื•ืจื” ื”ื‘ืื” - ื–ื” ื”ืกื™ืžืŸ ื”ื›ื™ ื˜ื•ื‘ ืฉืจื™ืคืงื˜ื•ืจื™ื ื’ ื”ื•ื ื”ื›ืจื—ื™. ื‘ื›ืœ ืจื’ืข ื ืชื•ืŸ ืืคืฉืจ ืœื”ืžืฉื™ืš ืœื”ื™ืื‘ืง ื‘ื“ื—ื™ื™ื ื•ืช ื•ื‘ื›ืœ ื–ืืช ืœื”ืชืืžืฅ ื•ืœื›ืชื•ื‘ ืืช ื”ืงื•ื“ ืฉืืชื” ืœื ืจื•ืฆื” ืœื›ืชื•ื‘. ื•ื‘ื›ืœ ืจื’ืข ื ืชื•ืŸ ืืคืฉืจ ืœื”ื—ืœื™ื˜ ืฉืืชื” ืžืืจื’ืŸ ืื—ืจืช ืืช ื”ืงื•ื“, ื›ื“ื™ ืฉืชืจืฆื” ืœื›ืชื•ื‘ ืืช ื”ืงื•ื“ ื”ื‘ื. ื›ื“ื™ ืฉื‘ืคืขื ื”ื‘ืื” ืœื ืชืฆื˜ืจืš ืœืฉื‘ืช ื—ืฆื™ ืฉืขื” ื‘ืคืœื™ื™ืกื˜ื™ื™ืฉืŸ ืœืคื ื™ ืฉืชืจื’ื™ืฉ "ืžื•ื›ืŸ" ืœื›ืชื•ื‘ ืืช ื”ืคื™ืฆ'ืจ.

ToCode
1 419
# ื—ื™ื“ืช React ื• ref ืจื•ืŸ ื”ื’ืื•ืŸ ื”ื—ืœื™ื˜ ืœื›ืชื•ื‘ ืชื™ื‘ืช ื˜ืงืกื˜ ื‘ืจื™ืืงื˜ ืขื ืžืฉืชื ื” ref ื‘ืžืงื•ื state. ืืช ื”ืงื•ื“ ื”ื‘ื ื”ื•ื ื›ืชื‘ ื‘ืฉื‘ื™ืœ ืœื”ืฆื™ื’ ืชื™ื‘ืช ืงืœื˜ ื•ื›ืคืชื•ืจ, ื•ืœืืคืฉืจ ืœื—ื™ืฆื” ืขืœ ื”ื›ืคืชื•ืจ ืจืง ืื ื™ืฉ ื˜ืงืกื˜ ื‘ืชื™ื‘ื”:
import { useRef } from "react";

export default function App() {
  const inputRef = useRef(null);
  const hasText = inputRef?.current?.value !== "";

  return (
    <div className="App">
      <h1>Write some text to enable the button</h1>
      <input type="text" ref={inputRef} />
      <button 
          disabled={!hasText}
      >Go</button>
      <p>hasText = {hasText}</p>
    </div>
  );
}
ื”ืื ื”ืžื ื’ื ื•ืŸ ืขื•ื‘ื“? ืื ืœื - ื”ืกื‘ื™ืจื• ืžื” ื‘ืืžืช ืงื•ืจื” ืฉื, ื•ืื™ืš ืœื’ืจื•ื ืœืงื•ื“ ืœืขื‘ื•ื“ ื›ืžื• ืฉืจื•ืŸ ืจืฆื”.