Как передать реквизит как null в реакции?

у меня загадка.

У меня есть текст, который я хочу переключить в компоненте.

в основном true => tick и false => untick, но я хочу 3-й сценарий, в котором я не хочу отображать текст

если я не передам свойство этому компоненту, оно автоматически будет считаться истинным. я могу передать propName={null} или что-то в этом роде?

или мне придется извлечь это в функцию (я бы не хотел)


person The Walrus    schedule 11.05.2018    source источник
comment
если я не передам свойство этому компоненту, он автоматически принимает значение true подождите, что? можете показать компонент. Я бы предположил, что это разрешается как falsy, если что.   -  person Thomas    schedule 11.05.2018
comment
@ Томас, да, я согласен, что этого следовало ожидать, когда я удалил опору. текст, возвращенный с истинным значением, был возвращен   -  person The Walrus    schedule 11.05.2018


Ответы (2)


Если вы не предоставите реквизит компоненту, он не будет присутствовать в объекте, представляющем реквизиты внутри этого компонента. Поэтому вы можете проверить, определена ли опора:

const Component = (props) => {
  if (props.checked === undefined) {
     return <Something />;
  }

  return <SomethingElse someProp={props.checked} />;
};

Затем это отобразит Something:

<Component />

И все они будут отображать SomethingElse:

<Component checked />
<Component checked={true} />
<Component checked={false} />
person James Allardice    schedule 11.05.2018
comment
спасибо, это помогло мне решить эту проблему. В итоге я написал функцию, а затем передал ей значение null, когда мне не нужен был текст. - person The Walrus; 11.05.2018

У вас может быть третье состояние null, но тогда вам нужно будет выполнять явные сравнения, т.е. a == false, и не оценивать a, так как оно станет ложным и в случае нуля.

person Umair Abid    schedule 11.05.2018