简体   繁体   English

如何从 react-native 中的另一个功能组件访问一个功能组件的状态?

[英]How to access one functional component's state from another functional component in react-native?

I want to access ModalView's state from MarkerView component.我想从 MarkerView 组件访问ModalView 的状态。 Actually i want to see ModalView when i click Get info.实际上,当我单击“获取信息”时,我想看到 ModalView button which is in MarkerView . MarkerView 中的按钮。 I want to set { setVisiblity(true) } from MarkerView component.我想从MarkerView组件设置 { setVisiblity(true) } 。 How can i do it?我该怎么做?

ModalView.js模态视图.js

const ModalView = () => {
    
    const [visiblity, setVisiblity] = useState(false);

    return (
        <Modal transparent={false} visible={visiblity} >

            <TouchableOpacity onPress={() => { setVisiblity(false)}}>
                <Text> Submit </Text>
            </TouchableOpacity>

        </Modal>
    )
}

MarkerView.js标记视图.js

const MarkerView = () => {

    return (
        // i want to set visiblity true from here
        <View>
            <TouchableOpacity onPress={() => { setVisiblity(true) }}> 
                    <Text>Get info.</Text>
            </TouchableOpacity>
        </View>
    )
}

App.js应用程序.js

import ModalVIew from './components/ModalView';
import Marker from './components/MarkerView';

const App = () => {

  return (

      <View>
        <Marker/>
        <ModalVIew/>

      </View>
  )
}

export default App;

you can use state management like contextAPI or redux , or you can put your state on your higher order component but this will result in some prop drilling.您可以使用状态管理,如contextAPIredux ,或者您可以将您的状态放在您的高阶组件上,但这会导致一些道具钻取。

App.js应用程序.js

 const App = () => {
    const [visiblity, setVisiblity] = useState(false);
    
      return (
    
          <View>
            <Marker visiblity={visiblity} onChangeVisiblity={(val) => setVisiblity(val)}/>
            <ModalVIew visiblity={visiblity} onChangeVisiblity={(val) => setVisiblity(val)}/>
    
          </View>
      )
    }

MarkerView.js标记视图.js

const MarkerView = ({visiblity, onChangeVisiblity: changeVisiblity}) => {

    return (
        <View>
            <TouchableOpacity onPress={() => changeVisiblity(true)}> 
                    <Text>Get info.</Text>
            </TouchableOpacity>
        </View>
    )
}

ModalView.js模态视图.js

const ModalView = ({visiblity, onChangeVisiblity:changeVisiblity}) => {
    
    const [visiblity, setVisiblity] = useState(false);

    return (
        <Modal transparent={false} visible={visiblity} >

            <TouchableOpacity onPress={() => changeVisiblity(false)}>
                <Text> Submit </Text>
            </TouchableOpacity>

        </Modal>
    )
}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM