PropTypes
ã¯propã®ãã¿ã€ããã«é¢ãããã®ã§ããããã null
ã¯ç©ºã®ãªããžã§ã¯ãã§ãããå®éã«ã¯ãªããžã§ã¯ãã®ã¿ã€ãã§ãã
ããããããã§ãèŠåããŸãïŒ
Warning: Required prop `profile` was not specified in `Element`. Check the render method of `OtherElement`.
ç§ã¯ãããèµ·ããã¯ãã§ã¯ãªããšæããŸãã
null
ãªããªã£ãåŸãèŠåãåæ¢ããŸãã undefined
å Žåã«ã®ã¿èŠåããå¿
èŠããããšç¢ºä¿¡ããŠããŸãã
null
ã¯å€ãªããšåçã§ããããªããžã§ã¯ãã§ã¯ãããŸããïŒç©ºãŸãã¯ãã®ä»ïŒã null
èŠåã衚瀺ããããªãå Žåã¯ãå¿
é ã«ããªãã§ãã ãããåãå¹æããããŸãã ããŒã®ååšããã¹ãããããšã¯ãç§ããå§ããããã®ã§ã¯ãããŸããã
åæããŸãã ãŠãŒã¶ãŒã«å€ãæå®ããããã«åŒ·å¶ãããããæå¹ãªå€ãšããŠnullãåãå ¥ããŠãæ§ããªããšæã£ãŠãããéåžžã«å€ãã®ãŠãŒã¹ã±ãŒã¹ã¯èããããŸããã å®çšçãªç®çã§ã¯ãnullã®isRequiredèŠåã¯è³¢æã§ãããäºæ³ãããåäœã§ãã
é¢é£ïŒ https ïŒ
ïŒãã®åé¡ã¯äŸç¶ãšããŠæ€çŽ¢çµæã«ç®ç«ã€ããã«è¡šç€ºãããŸãïŒ
ç§ãç®ã«ããäžè¬çãªãŠãŒã¹ã±ãŒã¹ã¯ãããŒã¿ã®APIåŒã³åºããçµäºããåã«Reactãã³ã³ããŒãã³ããã¬ã³ããªã³ã°ããããšã§ãã æåã®ã¬ã³ããªã³ã°ã¯ãããšãã°ãã¢ã€ãã ã®ãªã¹ãïŒ items: null
ïŒãã¬ã³ããªã³ã°ããŸãã ãã®åŸãAPIåŒã³åºããçµäºãã items
é
åãå
¥åãããŸãã
PropTypes.oneOfType([null, PropTypes.object]).isRequired
ãå®è¡ããããšããŠããã®ã§ãnullãŸãã¯ãªããžã§ã¯ãã®ããããã§ãããããã¯çŸåšäžå¯èœã§ããïŒ
CHANGELOGã«ãããšã 15.4.0
ãå¯èœã§ãããšæãããŸãã
å®éã15.4.0ã§ã¯éã§ãïŒ Required PropTypes now fail with specific messages for null and undefined.
ç§ããã®åé¡ã«çŽé¢ããŠããŸãã
@Noitidartã®åé¿çã¯ç§ã«ã¯
Failed prop type: The prop
å€is marked as required in
éžæ, but its value is
null .
ããããã£ãèŠæ±ããã ãã§ãªããnullå€ãèš±å¯ããããšã¯éåžžã«äŸ¿å©ã§ãã
ã©ããããããnull
ãèš±å¯ããããã®+1ã
æ§æãJSONãä»ããŠããŒãããããŠãŒã¹ã±ãŒã¹ãããã衚瀺ããæååãæå®ããããã€ãã®ã©ãã«æ§æãªãã·ã§ã³ããããŸããããšãã°ã次ã®ããã«ãªããŸãã
{
"title": "my title"
}
ãããã£ãŠãã¿ã€ãã«ã衚瀺ããªãå Žåã¯ã null
ã䜿çšããŠãã®ã±ãŒã¹ã瀺ããŸãã
{
"title": null
}
ïŒãããã®èšå®ãæ°åããããã䞊åã®hasTitle: false
ãè¿œå ããããšã¯çŠæ¢ãããŸããïŒ
JSONã³ã³ãã³ãã®å Žåãnullã䜿çšããããšã¯ãå®çŸ©ãããŠããªãïŒ undefined
ïŒãšæå³çã«çç¥ãããŠããïŒ null
ïŒãåºå¥ããããã®éåžžã«äŸ¿å©ãªæ¹æ³ã§ãã
nullãèš±å¯ããpropTypeãäžèŠã«èšå®ããããšãã§ããŸããããã¯å¿ é ã§ã¯ãªãããã§ãïŒP
@jquenseããããšãåçãåãããšãèšã£ãŠããã®ã§ã以åã®ã³ã¡ã³ããåé€ããŸããã
@jquenseã¯ãnullãšæªå®çŸ©ãèš±å¯ã§ããŸããã
ãããå
šäœã®åé¡ã§ãïŒ Javascriptã¯ãããã2ã€ã®ç°ãªãæ§é ãçç±ã§æäŸãããããPropTypesã«å¯ŸããŠnull === undefined
ãåŠçããããã«å
šå¡ã«åŒ·å¶ããããšã¯ã人çºçãªå¶éã§ãã
PropTypeã§æ瀺çã«nullãèš±å¯ããããããšãã£ãŠãundefinedãèš±å¯ããå¿ èŠããããšããæå³ã§ã¯ãããŸããã ãããã¯2ã€ã®ç°ãªãã±ãŒã¹ã§ãããèšèªã¯æå³çã«ãã®ããã«èšèšããŸããã
ç§ã¯ããã§ãã®èŠèœãšããåé¿ããããã®PRãæã£ãŠããŸãïŒ https ïŒ
undefined
ãèš±å¯ããªãã®ã¯ãã¿ã€ããã¹ãããããšãæå³ãã null
ãèš±å¯ããã®ã¯ãåŒã³åºãå
ãæ瀺çã«null
æž¡ããããã§ãã ããããã®åé¡ã®ãã€ã³ãã§ãã ãããŒã«åãæ¿ããããšããå§ãããŸãã®ã§ããã®åé¡ã¯è§£æ±ºããããšç解ããŠããŸããããã«ã€ããŠã¯åŸã§èª¬æããŸãã
ã§ããããã«ããäžã€ã®æ¹æ³ã@binki null
ã§ã¯ãªãundefined
ç¬èªã®PropTypeããªããŒã¿æ©èœã䜿çšããããšã§ãã
以äžã®äŸã§ã¯ã null
ãŸãã¯string
ãèš±å¯ãããŠããŸãã PropTypesã©ã€ãã©ãªã¯å
éšã§typeof
ã䜿çšããŠæååããã§ãã¯ããã®ã§ãåãããšãè¡ããŸããã 1ã€ã®å©ç¹ã¯ããã®é¢æ°ãã³ã³ããŒãã³ãã®å€éšã«ç§»åããŠãå¿
èŠã«å¿ããŠåŒã³åºãããšãã§ããããšã§ãã
static propTypes = {
id: PropTypes.number.isRequired,
email: function(props, propName, componentName) {
const propValue = props[propName] // the actual value of `email` prop
if (propValue === null) return
if (typeof propValue === 'string') return
return new Error(`${componentName} only accepts null or string`)
}
}
ãã®ãœãªã¥ãŒã·ã§ã³ã¯ãPropTypesã©ã€ãã©ãªã®æå³ããéžè±ããŠãããšæããŸã-ããã¯ã httpsïŒ//github.com/facebook/prop-types/blob/master/factoryWithTypeCheckers.jsã«ããPropTypesã©ã€ãã©ãªã®ä»¥äžã®ã³ãŒãã«ãããã®ã§ã
å®éã«æ€èšŒããåã«ãããããã£å€ãnull
å ŽåãisRequiredã§èšå®ãããããããã£ãèªåçã«ãšã©ãŒãã¹ããŒããã¯ã€ãã¯ãã§ãã¯ãå®è¡ãããŸãã èšãæããã°ãå¿
èŠãªããããã£ãnullã§ããã®ã¯èª€ãã§ãããšåœŒãã¯ä¿¡ããŠããŸãããç§ã¯ãããå¿
èŠãªnullãæã£ãŠããããšã¯æå¹ãªãŠãŒã¹ã±ãŒã¹ã§ãããšèããŠããŸãã
if (props[propName] == null) {
if (isRequired) {
if (props[propName] === null) {
return new PropTypeError('The ' + location + ' `' + propFullName + '` is marked as required ' + ('in `' + componentName + '`, but its value is `null`.'));
}
return new PropTypeError('The ' + location + ' `' + propFullName + '` is marked as required in ' + ('`' + componentName + '`, but its value is `undefined`.'));
}
return null;
} else {
return validate(props, propName, componentName, location, propFullName);
}
èšèŒãããŠããçç±ã«ããã @ jharris4ã«åæããŸãã null
ã¯undefined
ãšåãã§ã¯ãããŸããã ãã¬ãŒã¹ãã«ããŒãšããŠäœ¿çšããã®ãæšæºã§ãã
Mozilla Developer NetworkããïŒ
å€nullã¯ããªããžã§ã¯ãå€ãæå³çã«ååšããªãããšãè¡šããŸãã
nullã¯ãundefinedã®ããã«ãã°ããŒãã«ãªããžã§ã¯ãã®ããããã£ã®èå¥åã§ã¯ãããŸããã 代ããã«ãnullã¯èå¥ã®æ¬ åŠãè¡šããå€æ°ããªããžã§ã¯ããæããŠããªãããšã瀺ããŸãã APIã§ã¯ããªããžã§ã¯ããæåŸ ã§ããå Žæã§nullãååŸãããããšããããããŸãããé¢é£ãããªããžã§ã¯ãã¯ãããŸããã
å°ãªããšãPropTypes.oneOfType([null, PropTypes.string]).isRequired
ãŸã§ã¯nullãèš±å¯ããå¿
èŠããããŸãã
@jquense â isRequired
åé€ãããšãããããããã©ã«ããèšå®ããå¿
èŠããããŸãã ããã¯ãããããã®å€ãšããŠnull
ãèš±å¯ããªãããã«ããããã«ãã¬ãã¥ãŒãµãŒã®ã³ã³ããŒãã³ã_ããã³_ã®åæå€ã®ããã©ã«ããèšå®ããããšãæå³ããŸããïŒ
APIåŒã³åºããåŸ
ã£ãŠããéã«ã»ã¬ã¯ã¿ãŒã«data || ''
ïŒ isRequired
ã¯ç©ºã®æåå''
ã空ã®ãªããžã§ã¯ã{}
ãªã©ãåãå
¥ããïŒããããããããŸãçµäºnull
ã¯ãããŒã¿ãæ¥ãããšãã³ã³ããŒãã³ãã«äŒããã®ã«æé©ã§ããå°ãåŸ
ã£ãŠãã ããã ïŒããããç§ã¯ãããè¡ãããšã¯ã§ããŸãã...ïŒ
@ puiu91ã¯ä»ã®ãšããè¯ãããæ¯ãã€ããŸã
@ jharris4ãš@Findiglayãè¿°ã¹ãã®ãšåãçç±ã§ãå€ãšããŠnull
ãåãå
¥ããæšæºçãªæ¹æ³ãããã¯ãã ãšããããšã«ãåæããŸãããããã¯ããè°è«ãç¶ããå Žæã§ã¯ãããŸããã ãã®åé¡ã¯è§£æ±ºãããã ãã§ãªãã facebook / prop-typesã«å±ããŠã
ãã³ãã ä»æ¥ãããã«ééããŠããŸãã 次ã®ãããªãµããŒããçµã¿èŸŒãŸããŠãããšäŸ¿å©ã§ãã
myObjïŒPropType.object.isRequiredOrNull :)
ããã®åªå é äœã¯éåžžã«äœããšæããŸãã ãããŒã¯ãæšå¥šãããæ¹æ³ã§ãã http://flow.org/
@Marujahããªãã®ã¹ããããã¯æ£ãããããŸããã
ã³ã³ããŒãã³ãã«nullãæž¡ããŠã¿ããšãèŠåã衚瀺ãããŸãã
Warning: Failed prop type: The prop 'theProp' is marked as required in 'TheComponent', but its value is null.
åé¡ã¯ãisRequiredãæåã«è©äŸ¡ãããnullãŸãã¯æªå®çŸ©ã®å€ãééãããªãããšã§ãã
èå³ãããã°ãåé¡ãä¿®æ£ããããã®prop-typesãžã®PRã¯äžã«ãªã³ã¯ãããŠããŸãã
ããã確ãã«ïŒ ããäžåºŠåãã¹ãããŸããã
å€ãŸãã¯nullãå ·äœçã«æå®ããå¿ èŠãããããšãèŠæ±ããããšã¯ãPropTypesãä»ããŠçµ¶å¯Ÿã«èš±å¯ããå¿ èŠããããŸãã
ãããç§ãééããŠãããŠãŒã¹ã±ãŒã¹ã§ãã ã»ã¬ã¯ã¿ãŒã®90ïŒ ãå¿ èŠãšããã³ãŒã«ããã¯ãããã€ããããŸãã ããããå¿ èŠãšããªãããã€ãã¯ãéåžžã«ç¹æ®ãªãŠãŒã¹ã±ãŒã¹ã§ãã éåžžã®ã³ãŒã«ããã¯ããã¹ãŠæäŸããããšãåžžã«å¿ããŠããæ°ããéçºè ãããŸãã
誰ããããã€ãã®å°éå ·ãå¿ããã®ã§ã¯ãªãããããã®ã³ã³ããŒãã³ãã®ãã¹ãŠã®äœ¿çšã匷å¶ããŠãç¹å®ã®ã³ãŒã«ããã¯ãå«ããªããšããæèçãªæ±ºå®ãäžããããšæããŸãã
ã¯ãããããŒãä»ããŠç¬èªã®ããå ·äœçãªãã§ãã¯ãããã¯ããããšã¯ã§ããŸãããããã¯å°éå ·ã®æ€èšŒã2ã€ã®å Žæã«åå²ããpropTypesã®å®çŸ©ãäžç¥ãã人ã«ãšã£ãŠã¯çŽæçã§ã¯ãããŸããã
ããã«ç§ã®ãŠãŒã¹ã±ãŒã¹ãè¿œå ãããã£ãã ãã§ãã ããŒã¿ããã§ãããããæ¥æããšã©ãŒãçºçããå Žåãªã©ã®ããŒã¿ãå«ãreduxã¹ãã¢ããããŸããã³ã³ããŒãã³ãã«ã¯ãerrorãpropãå¿ èŠã§ãïŒããŒã¿ããã§ããã§ããªãã£ãå Žåã«ãŠãŒã¶ãŒã«ãšã©ãŒã衚瀺ã§ããããã«ããããïŒãããã¯ãããŒã¿ãæ£åžžã«ããŒããããå Žåã¯nullã§ããããšã©ãŒãçºçããå Žåã¯å ¥åãããŸãã
ããŒããŒã³ã³ããŒãã³ãïŒ PropTypes.node
ïŒãprops
ãšããŠæž¡ããŸããããŒããŒãã¬ã³ããªã³ã°ããããªãå Žåã¯ã null
ãæž¡ããŸãã
Afaikã render
é¢æ°ã¯ãäœãã¬ã³ããªã³ã°ããªãå Žåã undefined
ã§ã¯ãªãnull
ãè¿ãå¿
èŠããããŸãã ãããã£ãŠãå€ãšããŠnull
ãæž¡ãããšã¯ãç§ã«ãšã£ãŠæ£ããæ¹æ³ã®ããã«èŠããŸãã
ç§ã¯ïŒã®ã©ãããŒInputNumberã³ã³ããŒãã³ããå®è£
ãã<input type="number">
ç§ãæã£ãŠããã®ã§ãïŒ propTypes
ç§ã®å°éå
·ã®ããã«value
- PropTypes.number.isRequired
ããšç§ã¯ç§ã®ã³ã³ããŒãã³ãã䜿çšããå ŽåãIåžžã«ããããã£ãæž¡ããŸããã ããããä»æ¥ãããã©ã«ãã§nullå¯èœãªå€ãžã®ãªã³ã¯ãæž¡ãå¿
èŠããããã³ã³ããŒãã³ããèŠåãè¿œå ããŸãã ç§ã¯æ³åããããšãã§ããå¯äžã®æ±ºå®ã¯å€æŽããããšã§ãpropTypes
ç§ã®å°éå
·ã®ããã®value
ããPropTypes.oneOfType([PropTypes.number, PropTypes.string])
ãšã»ããdefaultProps
NULLãšããŠã ããããinput type = numberã¯æ°åã§ã®ã¿æ©èœããã¯ããªã®ã§ãæ£ãããªãããã«æããŸãã
PropTypes.oneOfType([null, PropTypes.object]).isRequired
ãå®è¡ããããšããŠããã®ã§ãnullãŸãã¯ãªããžã§ã¯ãã®ããããã§ãããããã¯çŸåšäžå¯èœã§ããïŒ
次ã®é¢æ°ãå¿
èŠã§ãïŒ Warning: Invalid argument supplied to oneOfType. Expected an array of check functions, but received null at index 1.
ãããã£ãŠã次ã®ãããªé¢æ°ãæå®ããå¿ èŠããããŸãã
PropTypes.oneOfType([
() => null,
PropTypes.object
]).isRequired
ãã®ãã°ã«ééããã°ããã§ããããåé¿ããããã®äŸ¿å©ãªé¢æ°ãäœæããŸããã
function nullable(subRequirement) {
const check = (required, props, key, ...rest) => {
if (props[key] === null) {
return null;
}
const sub = required ? subRequirement.isRequired : subRequirement;
return sub(props, key, ...rest);
};
const fn = check.bind(null, false);
fn.isRequired = check.bind(null, true);
return fn;
}
䜿çšæ³ïŒ
static propTypes = {
someCallbackFunction: nullable(PropTypes.func).isRequired,
};
isRequired
ãªãã§nullable
ã䜿çšããããšã¯å¯èœã§ãïŒãããããªãç¡æå³ã§ãïŒã isRequired
ãšäºææ§ãæãããçç±ã¯ã react/require-default-props
eslintã«ãŒã«ã§æ©èœããããã«ããããã§ãã
ç§ã®ãŠãŒã¹ã±ãŒã¹ã¯ãã³ãŒã«ããã¯ãåŠçããåäžã®ã³ã³ããŒãã³ãã«ãã£ãŠã©ããããããå
±éã®APIã«æºæ ããäžé£ã®ã³ã³ããŒãã³ãã§ãã null
ã³ãŒã«ããã¯ã¯ãèªã¿åãå°çšããæå³ãããããã©ãããŒã³ã³ããŒãã³ããæå³çã«null
æž¡ãããšããããŸãã åæã«ããã¹ãŠã®ããããã£ããµãã³ã³ããŒãã³ãã«æž¡ãããæ°ããããããã£ãè¿œå ãããå Žåã«ããã倱ãããªãããã«ããããšãéèŠã§ãã ãŸãããã®APIã«æºæ ãããã¹ãŠã®ã³ã³ããŒãã³ãã«defaultProps
ã®nullãæäŸããããããŸããã 圌ããç¥ã£ãŠããéããçºä¿¡è
ã¯å€ãæå®ããŠããå¿
èŠããããŸãã
ç§ã¯ä»¥åã«æžãããã«ããŒãåãããããããã±ãŒãžã«å ¥ããŠãæ£ããããšã蚌æããããã®äžé£ã®ãã¹ããè¡ããŸããã
npm install --save git+https://github.com/davidje13/prop-types-nullable.git#semver:^1.0.0
䜿çšæ³ïŒ
import PropTypes from 'prop-types';
import nullable from 'prop-types-nullable';
[...]
static propTypes = {
thing: nullable(PropTypes.string).isRequired,
};
æ°ãããœãªã¥ãŒã·ã§ã³ïŒ PropTypes.oneOfType([PropTypes.object]).isRequired
ãšã©ãŒãçºçããŸãã
çŽãæ¹ã
./~/prop-types/prop-types.jsã®èŠåéèŠãªäŸåé¢ä¿ïŒ1ïŒ482-489ããã¯ãã«ãæžã¿ã®javascriptãã¡ã€ã«ã®ããã§ãã ããã¯å¯èœã§ããããå§ãããŸããã ããè¯ãçµæãåŸãã«ã¯ãå ã®ãœãŒã¹ãèŠæ±ããããã«ããŠãã ããã @ ./~/prop-types/prop-types.js 1ïŒ482-489
PropTypes.oneOfType([null, PropTypes.object]).isRequired
ãå®è¡ããããšããŠããã®ã§ãnullãŸãã¯ãªããžã§ã¯ãã®ããããã§ãããããã¯çŸåšäžå¯èœã§ããïŒæ¬¡ã®é¢æ°ãå¿ èŠã§ãïŒ
Warning: Invalid argument supplied to oneOfType. Expected an array of check functions, but received null at index 1.
ãããã£ãŠã次ã®ãããªé¢æ°ãæå®ããå¿ èŠããããŸãã
PropTypes.oneOfType([ () => null, PropTypes.object ]).isRequired
å®éãæåŸã«ãisRequiredããåå ã§ãšã©ãŒãçºçããŸãããnullã§ãããšåæã«requiredã¯äºææ§ããããŸãã...
ããã¯ç§ã®ããã«åãããã®ã§ãïŒ
PropTypes.oneOfType([
PropTypes.string.isRequired,
() => null
])
@ gugol2ããªããæžãããã®ã¯ãåãã§ãã¯ãå®å
šã«ç¡å¹ã«ããã ãã§ããããšã«æ³šæããŠãã ããïŒããã§ããã®å°éå
·ããŸãã¯undefined
ãªã©ã«çªå·ãæž¡ãããšãã§ããŸãïŒã æäŸããé¢æ°ã¯ãæ€èšŒãæåããå Žåã¯null
ãè¿ãã倱æããå Žåã¯énull
ãè¿ãå¿
èŠããããŸãã
ãã®ã«ãŒãã«è¡ãããå Žåã¯ã次ã®ãããªãã®ãå¿ èŠã«ãªããŸãã
PropTypes.oneOfType([
PropTypes.string.isRequired,
(props, key) => props[key] === null ? null : 'Not null'
])
ãã¡ãããåä»ãªãã«ããŒé¢æ°ãäºåã«å®çŸ©ããããšãã§ããŸãã
const nullable = (props, key) => props[key] === null ? null : 'Not null'
// ...
PropTypes.oneOfType([PropTypes.string.isRequired, nullable])
PropTypes.oneOfType([PropTypes.string.isRequired])
ã ãã䜿çšããããšãå¥åŠãªããšã«å¯èœã§ãïŒããããç§ã¯æ¬åœã«ããããå§ãããŸããïŒïŒã ããã¯ãã°ã®ããã«æããŸããããã®ãããªã³ãŒããåŸã®ããŒãžã§ã³ã§åç¶ããããšã¯æåŸ
ã§ããŸããã ãŸããããã¯ä»¥åã«ææ¡ãããæ¹æ³ãšäŒŒãŠããŸãããåãã§ã¯ãªãããšã«æ³šæããŠãã ããã
åŸ ã€ããšãã§ããã°ãä¿¡ããããªãã»ã©ãã£ãããšåããŠãããªãŒãã³PRããããŸãããæããã«ãŸã æ€èšäžã§ãã
ãããŠãPRãããŒãžããããŸã§ãç§ãäœæããèåŸã«ãããŸããããããã°ãè¡ã®æåŸã«.isRequired
ãé
眮ã§ããããããªã³ãã£ã³ã°ã«ãŒã«ãšäºææ§ããããŸãã
ç§èŠããã¯æ£ããåäœã§ãããææžåããå¿ èŠããããŸãã
ç§ãç®ã«ããäžè¬çãªãŠãŒã¹ã±ãŒã¹ã¯ãããŒã¿ã®APIåŒã³åºããçµäºããåã«Reactãã³ã³ããŒãã³ããã¬ã³ããªã³ã°ããããšã§ãã æåã®ã¬ã³ããªã³ã°ã¯ãããšãã°ãã¢ã€ãã ã®ãªã¹ãïŒ
items: null
ïŒãã¬ã³ããªã³ã°ããŸãã ãã®åŸãAPIåŒã³åºããçµäºããitems
é åãå ¥åãããŸãã
ãããåŠçããããã®æè¯ã®æ¹æ³ã¯ãããŸããïŒ ãã®ãããããå¿ èŠã§ãããAPIããååŸããåã¯nullã§ãã
PropTypes.oneOfType([ PropTypes.string.isRequired, (props, key) => props[key] === null ? null : 'Not null' ])
@ davidje13ãã®ã¢ãããŒãã§å°ãåé¡ãçºçããŸããã ã«ãã¬ããžãã¹ãã«ã¯ãã«ããŒãããªã1/4ã®ã±ãŒã¹ããããŸãã
nullãŸãã¯å¿ èŠãªæååãæå®ã§ããprop'name 'ã1ã€ãããªãã³ã³ããŒãã³ãLoginããããšããŸãã
const Login = ({name}) => {
return <div>{name}</div>
}
ãããã£ãŠããã®ããããã£ã¿ã€ãã¯æ¬¡ã®ãšããã§ãã
Login.propTypes = {
name: PropTypes.oneOfType([
PropTypes.string.isRequired,
(props, key) => (props[key] === null ? null : 'Not null'),
]),
};
ãã®ã³ã³ããŒãã³ãããã¹ããããšããå®éã«ã¯2ã€ã®ã·ããªãªãnullãŸãã¯å¿ é ã®æååãããããŸããã
render(<Login name={null} />
render(<Login name={'anyName'} />
ããããã«ãã¬ããžã¯ãç§ã®ãã¹ãã®ã«ãã¬ããžã75ïŒ
ãããªãããšã瀺ããŠããŸãã
ããã«å¯Ÿããå
¬åŒã®ã¢ãããŒãã¯ã©ããªãã®ã ãããã
æ¬ èœããŠãããã¹ãã±ãŒã¹ã¯ããããããã§ãã¯ã«å€±æãããã®ã®ããã«èãããŸããïŒ ã€ãŸããæ°å€ãæªå®çŸ©ãªã©ãæž¡ããå Žåãããã¯æã€ã¹ãã§ã¯ãããŸããã
æ¬ èœããŠãããã¹ãã±ãŒã¹ã¯ããããããã§ãã¯ã«å€±æãããã®ã®ããã«èãããŸããïŒ ã€ãŸããæ°å€ãæªå®çŸ©ãªã©ãæž¡ããå Žåãããã¯æã€ã¹ãã§ã¯ãããŸããã
ããããããã§ã¯ãããŸããã
undefinedãæž¡ããŠããã«ãã¬ããžã¯æ¡åŒµãããŸããã
ãããŠããšã«ããæ°å€ãæž¡ãããšã¯ã§ããŸãããããã¯èš±å¯ãããå€ã§ã¯ãããŸããã
ãã®å Žåã¯ã«ããŒã§ããŸããã
æãåèã«ãªãã³ã¡ã³ã
ç§ãç®ã«ããäžè¬çãªãŠãŒã¹ã±ãŒã¹ã¯ãããŒã¿ã®APIåŒã³åºããçµäºããåã«Reactãã³ã³ããŒãã³ããã¬ã³ããªã³ã°ããããšã§ãã æåã®ã¬ã³ããªã³ã°ã¯ãããšãã°ãã¢ã€ãã ã®ãªã¹ãïŒ
items: null
ïŒãã¬ã³ããªã³ã°ããŸãã ãã®åŸãAPIåŒã³åºããçµäºããitems
é åãå ¥åãããŸãã