将过滤器应用于嵌套组件

问题描述 投票:3回答:1

我正在尝试使用<Trans>组件和插值来应用自定义过滤器(用于在土耳其语中添加正确的变形后缀)。问题在于,需要改写的句子的关键部分(用户名)由其自己的组件呈现。是否可以有条件地将过滤器应用于嵌套组件?

  • 我不能直接在内部组件上使用变形过滤器。内部组件在多个地方使用,每个上下文可能需要不同的过滤器或根本不需要过滤器。
  • 内部组件只是获得一个用户ID作为prop,并通过react-redux获取其自己的内容(用户名)。外部组件(拥有句子上下文)对内部组件的内容一无所知。
  • 过滤器对于一种语言(土耳其语)很有用。要使用的过滤器必须是翻译文件的一部分,因为所有其他语言将not使用这些过滤器。 (此外,选择过滤器是翻译人员的工作)

实际上,如果我可以做这样的事情会有所帮助(但这不起作用)

{  // en.json
   newMessage: "You got a new message from <1>user</1>" 
}

{  // tr.json
   newMessage: "Size {{<1>user</1>, ablative_suffix}} yeni bir mesaj geldi" 
}
在给定用户名“ Mert”的情况下,

我希望提供类似于“ Size Mert'ten yeni bir mesaj geldi”的内容。还有另一种方法可以完成这样的事情吗?


<User>

const User = ({ user }) => <strong>{user ? user.name: null}</strong>;

const mapStateToProps = (state, { id }) => ({ user: state.users[id] });

export default connect(mapStateToProps);

<NewMessage>

export const NewMessage = ({userId}) => 
    <Trans i18nKey="newMessage">
        You got a new message from <User id={userId}/>
    </Trans>;

i18next react-i18next
1个回答
1
投票
© www.soinside.com 2019 - 2024. All rights reserved.