Dlaczego` Export Default Const ' jest niepoprawny?
Widzę, że w porządku jest:
const Tab = connect( mapState, mapDispatch )( Tabs );
export default Tab;
Jednak jest to niepoprawne:
export default const Tab = connect( mapState, mapDispatch )( Tabs );
Ale To jest w porządku:
export default Tab = connect( mapState, mapDispatch )( Tabs );
Czy można to wyjaśnić dlaczego const
jest nieprawidłowe z export default
? Czy jest to zbędny dodatek i cokolwiek deklarowane jako {[4] } jest domniemane const
lub takie?
5 answers
const
jest jak let
, jest to Leksykaldeklaracja (VariableStatement, Declaration ) służy do definiowania identyfikatora w Twoim bloku.
Próbujesz zmieszać to ze słowem kluczowym default
, który oczekuje HoistableDeclaration, ClassDeclaration lub Przypisyzobacz też podążać za nim.
Dlatego jest to SyntaxError.
If you want to const
something you należy podać identyfikator i nie używać default
.
export
sama przyjmuje VariableStatement lub Deklaracja do swojej racji.
AFAIK eksport sam w sobie nie powinien niczego dodawać do obecnego zakresu.
Poniżej jest dobrze
export default Tab;
Tab
staje się AssignmentExpression Jak podano nazwę default ?
export default Tab = connect( mapState, mapDispatch )( Tabs );
jest w porządku
Tutaj Tab = connect( mapState, mapDispatch )( Tabs );
jest przypisanie ekspresji.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-03-28 11:45:12
Możesz również zrobić coś takiego, jeśli chcesz wyeksportować domyślnie const / let, zamiast
const MyComponent = ({ attr1, attr2 }) => (<p>Now Export On other Line</p>);
export default MyComponent
Możesz zrobić coś takiego, czego osobiście nie lubię.
let MyComponent;
export default MyComponent = ({ }) => (<p>Now Export On SameLine</p>);
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-09-26 08:25:16
Paul 's answer is the one you' re looking for. Jednak, w praktyce, myślę, że może Cię zainteresować wzór, którego używam w moich własnych aplikacjach React + Redux.
Oto okrojony przykład z jednej z moich tras, pokazujący, jak można zdefiniować komponent i wyeksportować go jako domyślny za pomocą pojedynczej instrukcji:
import React from 'react';
import { connect } from 'react-redux';
@connect((state, props) => ({
appVersion: state.appVersion
// other scene props, calculated from app state & route props
}))
export default class SceneName extends React.Component { /* ... */ }
(Uwaga: używam terminu "Scena" dla najwyższego poziomu komponentu dowolnej trasy).
Mam nadzieję, że to pomoże. Myślę, że jest o wiele czystszy niż konwencjonalneconnect( mapState, mapDispatch )( BareComponent )
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-09-01 16:19:00
Jeśli nazwa komponentu jest wyjaśniona w nazwie pliku MyComponent.js
, po prostu nie nazywaj komponentu, zachowaj wąski kod.
import React from 'react'
export default (props) =>
<div id='static-page-template'>
{props.children}
</div>
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-04-15 16:38:49
Odpowiedź udostępniona przez Pawła jest najlepsza. Aby rozwinąć więcej,
Dla każdego pliku może być tylko jeden domyślny eksport. Natomiast może być więcej niż jeden eksport const. Domyślna zmienna może być importowana z dowolną nazwą, natomiast zmienna const może być importowana z dowolną nazwą.
Var message2 = 'jestem eksportowany';
Export default message2;
Export const message = 'I am also exported'
Po stronie importu musimy importować jak to:
Import {wiadomość} z"./ test";
LUB
Import wiadomości z"./ test";
Przy pierwszym imporcie importowana jest zmienna const, podczas gdy przy drugim importowana jest domyślna.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-07-13 17:06:03