Как передать реквизит компоненту в действии

На самом деле, что-то не так во всех остальных ответах в режиме r+.

test.in содержимое файла:

hello1
ok2
byebye3

И сценарий py:

with open("test.in", 'r+')as f:
    f.readline()
    f.write("addition")

Выполните его, и содержимое test.in будет изменено на:

hello1
ok2
byebye3
addition

Однако, когда мы модифицируем скрипт на:

with open("test.in", 'r+')as f:
    f.write("addition")

test.in также реагируют:

additionk2
byebye3

Таким образом, режим r+ позволит нам покрывать контент с самого начала, если мы не выполнили операцию чтения. И если мы выполним некоторую операцию чтения, f.write() просто добавит файл.

Кстати, если мы f.seek(0,0) до f.write(write_content), write_content будет покрывать их из positon (0, 0).

0
задан virginiarcrz 8 March 2019 в 11:14
поделиться

4 ответа

Я предполагаю, что код, который вы показываете, находится внутри метода render() некоторого компонента React, так что у вас действительно есть состояние.

Обратите внимание, что атрибут component в теге Route ожидает значение, которое является функцией без аргументов. Компонент для визуализации является результатом функции . Но ничто не запрещает вам сделать какую-то работу до возврата значения. Я бы попробовал что-то вроде этого

<Route path={'/page1'} component={() => {
    this.setState({headerTitle: ...what you want..., boldTitle: ...what you want...})
    return <Page1 />
}}/>

. Если Page1 - это просто функция, измените строку «return» с помощью return Page1()

.

0
ответ дан Carlos Lombardi 8 March 2019 в 11:14
поделиться

вы можете использовать библиотеку редуксов как глобальное состояние

что-то вроде этого

 class Main extends Component{
    render(){
    return (
            <main className={theme.main}>
                <Header 
                    title={this.props.headerTitle}
                    boldTitle={this.state.boldTitle}
                />
                <div className={theme.content}>
                    <Switch>
                        <Route path={'/page1'} component={Page1}/>
                        <Route path={'/page2'}component={Page2}
                        />
                    </Switch>
                </div>
                <Footer/>
            </main>
        )
    }
    const mapStateToProps = state =>{
     return {     headerTitle: state.headerTitle    }
    }
    export default connect(mapStateToProps)(Main)

Page1

 class Page1 extends Component{    
    changeTitle =()=>{
     this.props.actions.changeTitle("title from Page1")
    }
    render(){
    return (
    <div>
    <button onClick={this.changeTitle}>changeTitle</button>
    </div>
    )
    }
    const mapDispatchToProps = (dispatch)=> {
        return {
            actions: bindActionCreators({ changeTitle }, dispatch)
        }
    }
    export default connect(null, mapDispatchToProps)(Page1)

код это не функционально, но это идея как вы можете использовать для этого редукс

0
ответ дан David Zambrano 8 March 2019 в 11:14
поделиться

ПЕРЕМЕСТИТЕ ВАШУ ГОЛОВУ ВНУТРИ Page1 И Page2.

<Route path={'/page2'} component={() => <Page2  currentTitle={this.state.headerTitle} 
 />} />

Затем в заголовке используйте currentTitle, чтобы изменить заголовок.

0
ответ дан Anil Kumar 8 March 2019 в 11:14
поделиться

Поместите заголовок в его собственный компонент и импортируйте его отдельно в каждый компонент страницы.

Затем вы можете передавать реквизиты в заголовок, например, когда вы вызываете Заголовок на каждой странице ...

import Header from (wherever that component is)

class Page# extends React.component {

other code

render() {
return (
         <div>
           <Header currentTitle="this.state.headerTitle" />
           <rest of code for this page /> 
         </div> 
}

или все, что вам нужно.

0
ответ дан James H 8 March 2019 в 11:14
поделиться
Другие вопросы по тегам:

Похожие вопросы: