SearchBar 在作为 props 以及来自其父级的 setter 时不会更新值

Posted

技术标签:

【中文标题】SearchBar 在作为 props 以及来自其父级的 setter 时不会更新值【英文标题】:SearchBar doesn’t update the value when it comes as props along with the setter from it´s parent 【发布时间】:2021-09-05 13:07:35 【问题描述】:

我希望“SearchBar”(反应原生元素)位于另一个组件中,父组件负责处理内容状态

const SearchScreen = () => 
    const [term, setTerm] = useState('');

    return (
        <View>
            <MySearchbar
                placeholderText="Type your search..."
                onTermChange=(text) => setTerm(text)
                term=term
            />
        </View>
    );
;

MySearchBar 在哪里

const MySearchbar = ( onTermChange, term, placeholderText ) => 
    return (
        <SearchBar
            darkTheme
            placeholder=placeholderText
            onTextChange=onTermChange
            value=term
        />
    );
;

使用这种方法,当我输入内容时,值会出现但会立即消失,就好像值项没有用新值更新一样

但如果我将 SearchBar 直接放在“SearchScreen”组件上,一切正常

为什么状态值 'term' 没有更新?

拉斐尔

【问题讨论】:

onTextChange 还是onChangeText 【参考方案1】:

您需要考虑的主要是调用渲染方法。尝试控制台记录搜索栏的设置器,您会看到由于父组件中的状态而再次渲染后,它将更改道具,再次渲染并调用设置器。

我的方法是在搜索栏中设置相同的状态并将设置器更改为正确的命名法:onChangeText

【讨论】:

不,它没有。我认为它与事件有关,更新的事件没有触发

以上是关于SearchBar 在作为 props 以及来自其父级的 setter 时不会更新值的主要内容,如果未能解决你的问题,请参考以下文章

如何改变基于Vue“prop”计算的数组?

如何在 Vue 中以 Typescript 语法定义使用 prop 作为其初始值的本地数据属性?

我如何设置作为prop传递的material-ui图标的样式

在 TableView 上添加 SearchBar

iOS searchBarCancelButtonClicked 方法以及searchbar cancle button 取消按钮的牛掰之处

React 传递函数作为 prop