рдХреНрдпрд╛ рдЖрдк рдХрд┐рд╕реА рд╕реБрд╡рд┐рдзрд╛ рдХрд╛ рдЕрдиреБрд░реЛрдз рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рдмрдЧ рдХреА рд░рд┐рдкреЛрд░реНрдЯ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ?
рдмрдЧ (рд╕рдВрднрд╡рддрдГ)
рд╡рд░реНрддрдорд╛рди рд╡реНрдпрд╡рд╣рд╛рд░ рдХреНрдпрд╛ рд╣реИ?
рдкреНрд▓рдЧрдЗрди рдпрд╣ рддреНрд░реБрдЯрд┐ рджрд┐рдЦрд╛ рд░рд╣рд╛ рд╣реИ:
рд░рд┐рдПрдХреНрдЯ рд╣реБрдХ "рдпреВрдЬрд╝рд╕реНрдЯреЗрдЯ" рдХреЛ рд╕рд╢рд░реНрдд рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред рд░рд┐рдПрдХреНрдЯ рд╣реБрдХ рдХреЛ рд╣рд░ рдХрдВрдкреЛрдиреЗрдВрдЯ рд░реЗрдВрдбрд░ рдореЗрдВ рдареАрдХ рдЙрд╕реА рдХреНрд░рдо рдореЗрдВ рдмреБрд▓рд╛рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдХреНрдпрд╛ рдЖрдкрдиреЗ рдЧрд▓рддреА рд╕реЗ рдПрдХ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рд░рд┐рдЯрд░реНрди рдХреЗ рдмрд╛рдж рдПрдХ рд░рд┐рдПрдХреНрдЯ рд╣реБрдХ рдХрд╣рд╛ рдерд╛? (рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛-рд╣реБрдХ / рдирд┐рдпрдо-рдХреЗ-рд╣реБрдХ) рдЕрдиреБрдЧрд╛рдореА
рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ рдореИрдВ рдХрд┐рд╕реА рднреА рд╣реБрдХ рдХреЛ рд╕рд╢рд░реНрдд рдХрд╣ рд░рд╣рд╛ рд╣реВрдВред
рдХреЛрдб:
https://codesandbox.io/s/exciting-bhabha-mqj7q
function App(props) {
const someObject = { propA: true, propB: false };
for (const propName in someObject) {
if (propName === true) {
console.log("something");
} else {
console.log("whatever");
}
}
// THE PLUGIN ERROR MSG ON THIS useState
const [myState, setMyState] = useState(null);
return (
<div className="App">
<h1>Hello CodeSandbox</h1>
<h2>Start editing to see some magic happen!</h2>
</div>
);
}
рдЕрдкреЗрдХреНрд╖рд┐рдд рд╡реНрдпрд╡рд╣рд╛рд░ рдХреНрдпрд╛ рд╣реИ?
рдкреНрд▓рдЧрдЗрди рдЗрд╕ рд╕реНрдерд┐рддрд┐ рдореЗрдВ рддреНрд░реБрдЯрд┐ рдирд╣реАрдВ рджрд┐рдЦрд╛рдПрдЧрд╛ред
рд░рд┐рдПрдХреНрдЯ рдХреЗ рдХреМрди рд╕реЗ рд╕рдВрд╕реНрдХрд░рдг рдФрд░ рдХреМрди рд╕реЗ рдмреНрд░рд╛рдЙрдЬрд╝рд░ / OS рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рд╕реЗ рдкреНрд░рднрд╛рд╡рд┐рдд рд╣реИрдВ?
рдореИрдВрдиреЗ рджреЗрдЦрд╛ рдХрд┐ рдЗрд╕ рд╡рд┐рд╢реЗрд╖ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП:
pathsFromStartToEnd
3
allPathsFromStartToEnd
2
рдпрд╣ рднреА possiblyHasEarlyReturn
true
рдпрд╣ рд╡рд┐рд╢реЗрд╖ рддреНрд░реБрдЯрд┐ рддрдм рдмрддрд╛рдИ рдЬрд╛рддреА рд╣реИ рдЬрдм pathsFromStartToEnd
рдФрд░ allPathsFromStartToEnd
рдЕрд╕рдорд╛рди рд╣реЛрдВред
рджреЗрдЦреЗрдВ RulesOfHooks.js рд▓рд╛рдЗрди 404
рдпрджрд┐ рдЖрдк for..in
рд▓реВрдк рдХреЗ рдЕрдВрджрд░ рдХреЛрдб рдХреЛ рдПрдХ рдЕрд▓рдЧ рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ рд╕рд╛рд░ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рд▓рд┐рдВрдЯ рддреНрд░реБрдЯрд┐ рджреВрд░ рд╣реЛ рдЬрд╛рддреА рд╣реИред
рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, pathsFromStartToEnd
рдФрд░ allPathsFromStartToEnd
рджреЛрдиреЛрдВ рд╕рдорд╛рди 2
:
const someObject = { propA: true, propB: false };
const someFunction = (propName) => {
if (propName === true) {
console.log("something");
} else {
console.log("whatever");
}
}
for (const propName in someObject) {
someFunction(propName)
}
const [myState, setMyState] = useState(null);
рдореБрдЭреЗ рдЕрднреА рднреА рдпрдХреАрди рдирд╣реАрдВ рд╣реИ рдХрд┐ рдХреНрдпреЛрдВред
@ рдмреЗрдпрд░рди , рдореИрдВрдиреЗ рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рд╕реБрд▓рдЭрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдПрдордЖрд░ рдХреЛ рд╕рдВрдмреЛрдзрд┐рдд рдХрд┐рдпрд╛ рдФрд░ (# 16853) рдмрдирд╛рдпрд╛ред
рдРрд╕рд╛ рд╣реЛрдиреЗ рдХрд╛ рдореБрдЦреНрдп рдХрд╛рд░рдг рдпрд╣ рд╣реИ рдХрд┐ allPathsFromStartToEnd
рдХреЗ рдореВрд▓реНрдп рдХреА рдЧрдгрдирд╛ рдЧрд▓рдд рд╣реИред
рдЗрд╕ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, рдкреНрд░рд╛рд░рдВрдн рд╕реЗ рдЕрдВрдд рддрдХ рдХреЗ рдкрдереЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ 3 рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдП, рд▓реЗрдХрд┐рди рдлрд╝рдВрдХреНрд╢рди 2 рд▓реМрдЯрддрд╛ рд╣реИред
рдРрд╕рд╛ рд╣реЛрдиреЗ рдХрд╛ рдХрд╛рд░рдг рдЪрдХреНрд░реАрдп рд░рд╛рд╕реНрддреЛрдВ рдХреА рддреНрд░реБрдЯрд┐рдкреВрд░реНрдг рдХреИрд╢рд┐рдВрдЧ рд╣реИред рдЗрд╕рд▓рд┐рдП рд╕рд╛рдорд╛рдиреНрдп рдЧреНрд░рд╛рдлрд╝ рдЯреНрд░реИрд╡рд░реНрд╕рд┐рдВрдЧ рдореЗрдВ, рд╣рдореЗрдВ рдкрде рдЗрддрд┐рд╣рд╛рд╕ рдХреА рднреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдХреЗрд╡рд▓ рдЪрдХреНрд░реАрдп рддрддреНрд╡реЛрдВ рдХреА рдПрдХ рд╕реВрдЪреА рд▓реЗрддрд╛ рд╣реИ, рдФрд░ рдЗрд╕ рдкрде рдкрд░ рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рддрддреНрд╡реЛрдВ рдХреА рдЬрд╛рдирдХрд╛рд░реА рдирд╣реАрдВ рд╣реЛрддреА рд╣реИред
рдирддреАрдЬрддрди, рдЬрдм рдХреЛрдИ рд╢рд░реНрдд for...in obj
, рддреЛ рджрд┐рд╢рд╛ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рд╣рдо рдХреБрдЫ рд░рд╛рд╕реНрддреЗ рдЦреЛ рд╕рдХрддреЗ рд╣реИрдВред
рдпрд╣ рдЕрднреА рднреА 2.4.0 рдХреЗ рд╕рд╛рде рдПрдХ рдореБрджреНрджрд╛ рд╣реИ, рдереЛрдбрд╝рд╛ рд╕рд░рд▓ рд░реЗрдкреНрд░реЛ:
import * as React from "react";
function Component() {
let isLastEven = false;
for (let x of [1, 2, 3]) {
if (x % 2 == 0) {
isLastEven = true;
} else {
isLastEven = false;
}
}
let y = React.useMemo(() => 1, []);
return <div>{y}</div>;
}
рдХреНрдпрд╛ # 16853 рдХреЛ рдлрд┐рд░ рд╕реЗ рдЦреЛрд▓рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ?
рд╡рд┐рд▓рдп рдХрд┐рдпрд╛ рдЧрдпрд╛ https://github.com/facebook/react/pull/16853
рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА
рд╡рд┐рд▓рдп рдХрд┐рдпрд╛ рдЧрдпрд╛ https://github.com/facebook/react/pull/16853