Как вызвать компонент класса с переменной?

У меня есть эта функция, с заголовком. Как я могу вызвать что-то вроде:

<LayerEditPost test = {"Это работает!"} />, чтобы мой {это.состояние.тест} изменился?

В функциональных компонентах я могу передавать свойства для вызова своих компонентов, но это не работает с компонентами класса (свойство «тест» не существует для типа «IntrinsicAttributes & IntrinsicClassAttributes & Readonly<{}>)

Я не уверен, где я должен объявить свою переменную, чтобы я мог получить значение из вызова компонента.

export class LayerEditPost extends React.Component<{}, {test: string, open: boolean}> {
    constructor(props) {
        super(props);
        this.state = { open: false, test: "hi" };
        this.toggleDrawer = this.toggleDrawer.bind(this);
    }

    toggleDrawer(e) {
        console.info("click", e);
        this.setState({ open: !this.state.open });
    }

    render() {
        return (
            <>
                <IconLink icon = {object___pencil} iconVariant = {"solid"} onClick = {this.toggleDrawer}></IconLink>
                <Layer
                    layout = {"right-75"}
                    closeLinkLabel = {"Back to Administration"}
                    open = {this.state.open}
                    onCloseClick = {this.toggleDrawer}
                    htmlAttrs = {{
                        "aria-labelledby": "layerLeftLabel",
                        "aria-describedby": "layerLeftDescription",
                    }}
                >
                    <H2 id = "layerLeftLabel">Edit Post</H2>
                    <H2>{this.state.test}</H2> <- I want to call LayerEditPost with a variable to change "test"
                </Layer>
            </>
        );
    }
}
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Навигация по приложениям React: Исчерпывающее руководство по React Router
Навигация по приложениям React: Исчерпывающее руководство по React Router
React Router стала незаменимой библиотекой для создания одностраничных приложений с навигацией в React. В этой статье блога мы подробно рассмотрим...
Массив зависимостей в React
Массив зависимостей в React
Все о массиве Dependency и его связи с useEffect.
0
0
18
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

В вашем определении React.Component<{}, {test: string, open: boolean}> в первой строке у вас есть два общих типа: второй — это тип для вашего состояния, а первый ({}) — для свойств, которые вы ищете.

Вы можете переместить определение test: string в первый тип объекта, чтобы ваше определение стало

export class LayerEditPost extends React.Component<{test: string}, {open: boolean}> { /* ... */ }

Затем вы можете получить доступ к переданному свойству, используя this.props.test:

export class LayerEditPost extends React.Component<{test: string}, {open: boolean}> {
    render() {
        return (
            <>
                {/* Other stuff ... */}
                <H2>{this.props.test}</H2> <- I want to call LayerEditPost with a variable to change "test"
            </>
        );
    }
}

Спасибо. Оно работает. Мне пришлось удалить «тест: привет» в моих штатах. Благодарю вас!

JohnDole 29.03.2022 21:58

Рад, что это помогло вам! Вы можете принять ответ указать, что это сработало для вас

Janik 29.03.2022 22:02

Вам пришлось удалить test из своего состояния, потому что вы также удалили его из определения типа. Если вам это нужно (по какой-либо причине), вы можете снова добавить его во 2-е определение состояния, как и раньше.

Janik 29.03.2022 22:04

Другие вопросы по теме